救援无法登录的 EC2 实例
| 项目 | 说明 |
|---|---|
| 难度 | 初级 |
| 预计时间 | 15-30 分钟 |
| 使用环境 | Ubuntu 24.04 LTS |
| 最后更新 | 2025-12 |
当 EC2 实例因以下原因无法通过 SSH 登录时,使用 SSM Session Manager 进行救援:
- 丢失 SSH 密钥
- 忘记用户密码
- SSH 服务配置错误
- 防火墙或安全组配置错误
在执行救援操作前,确认以下条件已满足:
- 实例已安装 SSM Agent(Ubuntu 24.04 官方 AMI 默认预装)
- 实例已附加包含
AmazonSSMManagedInstanceCore策略的 IAM 实例角色 - 实例可访问 SSM 服务端点(通过公网、NAT Gateway 或 VPC Endpoint)
验证 SSM 连接状态
在 AWS 控制台进入 Systems Manager > Fleet Manager,确认目标实例状态为 “Online”。

1. 连接到实例
Section titled “1. 连接到实例”最佳实践:使用 AWS 控制台
- 进入 EC2 > 实例,选择目标实例
- 点击 连接 > Session Manager > 连接

连接成功后进入 ssm-user 会话,执行以下命令切换到 root:
sudo -i2. 救援丢失的 SSH 密钥
Section titled “2. 救援丢失的 SSH 密钥”场景:原始密钥对丢失,需添加新公钥。
操作步骤
- 在本地生成新密钥对(如已有可跳过)
- 通过 Session Manager 连接实例
- 将新公钥追加到目标用户的授权文件
echo "ssh-rsa AAAA...你的公钥内容..." >> /home/ubuntu/.ssh/authorized_keys- 确保文件权限正确
chmod 600 /home/ubuntu/.ssh/authorized_keyschown ubuntu:ubuntu /home/ubuntu/.ssh/authorized_keys验证
使用新密钥通过 SSH 连接实例,确认登录成功。
3. 救援忘记的用户密码
Section titled “3. 救援忘记的用户密码”场景:需要密码登录但已遗忘。
操作步骤
- 通过 Session Manager 连接实例并切换到 root
- 重置目标用户密码
passwd ubuntu- 按提示输入两次新密码
验证
如果实例启用了密码登录,使用新密码通过 SSH 连接验证。
4. 救援 SSH 配置错误
Section titled “4. 救援 SSH 配置错误”场景:修改 /etc/ssh/sshd_config 后 SSH 服务无法启动。
操作步骤
- 通过 Session Manager 连接实例
- 检查 SSH 服务状态
systemctl status sshd- 检查配置文件语法
sshd -t-
根据错误提示修复配置文件,常见问题包括:
- 拼写错误
- 无效的参数值
- 缺少必要的配置项
-
修复后重启 SSH 服务
systemctl restart sshd验证
systemctl status sshd确认状态为 active (running),然后通过 SSH 连接测试。
5. 救援防火墙或安全组错误
Section titled “5. 救援防火墙或安全组错误”场景:iptables/ufw 规则或安全组阻止了 SSH 连接。
5.1 修复 iptables/ufw 规则
Section titled “5.1 修复 iptables/ufw 规则”操作步骤
- 通过 Session Manager 连接实例
- 检查当前防火墙状态
# 检查 ufwufw status
# 检查 iptablesiptables -L -n- 根据情况选择修复方式:
方式一(最佳实践):允许 SSH 端口
ufw allow 22/tcp方式二:临时禁用防火墙
ufw disable验证
通过 SSH 连接实例,确认可以正常登录。
5.2 修复安全组规则
Section titled “5.2 修复安全组规则”操作步骤
- 进入 EC2 > 安全组
- 找到实例关联的安全组
- 在入站规则中添加:
- 类型:SSH
- 端口:22
- 来源:你的 IP 或所需 CIDR
验证
通过 SSH 连接实例,确认可以正常登录。
Q: Session Manager 无法连接,实例显示 “Offline”
检查以下项目:
- 确认 IAM 角色已正确附加且包含
AmazonSSMManagedInstanceCore策略 - 确认实例可以访问 SSM 端点(检查路由表、NAT Gateway 或 VPC Endpoint 配置)
- 通过 EC2 Serial Console 检查 SSM Agent 是否运行
Q: 修改 authorized_keys 后仍无法 SSH 登录
检查以下项目:
- 确认公钥格式正确,无换行或多余空格
- 确认文件权限为 600,目录权限为 700
- 确认 SELinux 未阻止访问(Ubuntu 默认未启用)
Q: 重置密码后仍无法使用密码登录
SSH 默认禁用密码登录。如需启用,修改 /etc/ssh/sshd_config:
PasswordAuthentication yes然后重启 sshd 服务。