You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

丢失SSH密钥对后无法连接EC2 Ubuntu实例,按官方方法操作仍失败求助

解决EC2 Ubuntu实例密钥替换失败及SSL紧急修复方案

一、先明确:控制台显示的旧密钥名称不影响登录

EC2控制台的「密钥名称」只是实例创建时的元数据标记,不决定实际SSH登录权限,不用纠结这个显示问题,重点是用户的authorized_keys文件是否正确更新。

二、排查cloud-init执行情况

  1. 登录EC2控制台,找到目标实例,进入「监控」标签页,点击「获取系统日志」。
  2. 在日志中搜索cloud-init相关内容:
    • 若看到ssh_authorized_keys相关的成功写入日志,说明脚本执行正常,检查本地SSH客户端配置:确保新密钥文件权限为600(执行chmod 600 你的新密钥.pem),再尝试登录。
    • 若看到报错(比如公钥格式错误、YAML缩进错误),修正cloud-config脚本后重新执行:停止实例→编辑user data→重启。

正确的cloud-config脚本格式(注意缩进和完整公钥):

#cloud-config
ssh_authorized_keys:
  - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDxxxxxx...完整公钥内容... ubuntu@your-key-name

三、挂载根卷手动修复(最可靠的方法)

如果cloud-init执行失败,直接修改实例根卷的authorized_keys:

  1. 停止目标实例,在「存储」标签页中分离根卷(记录根卷的设备名,比如/dev/sda1)。
  2. 启动一台临时Ubuntu EC2实例(使用新密钥对),将分离的根卷挂载到临时实例上(控制台→临时实例→「存储」→「添加卷」→选择刚才分离的根卷,设备名选/dev/sdf)。
  3. 登录临时实例,执行以下命令挂载卷:
    sudo mkdir /mnt/recovery
    sudo mount /dev/xvdf1 /mnt/recovery  # 设备名可通过`lsblk`确认,通常是xvdf1
    
  4. 查看并修改ubuntu用户的authorized_keys:
    cat /mnt/recovery/home/ubuntu/.ssh/authorized_keys
    # 若未发现新公钥,手动添加:
    echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDxxxxxx...你的完整公钥..." >> /mnt/recovery/home/ubuntu/.ssh/authorized_keys
    
  5. 卸载卷并恢复:
    sudo umount /mnt/recovery
    
    分离临时实例上的卷,重新挂载回目标实例,启动目标实例后用新密钥登录。

四、SSL证书紧急修复(先解决网站问题)

如果实例登录暂时无法解决,先通过AWS ACM快速恢复网站:

  1. 申请ACM免费证书(覆盖你的域名),选择DNS验证方式快速完成验证。
  2. 创建Application Load Balancer(ALB),将目标实例添加到目标组,配置HTTPS监听并关联ACM证书。
  3. 修改域名解析,将流量指向ALB,网站即可通过HTTPS正常访问,之后再慢慢处理实例登录问题。

内容的提问来源于stack exchange,提问作者kibz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 20:15:28