丢失Amazon EC2的pem文件后修改密钥配置出现报错如何解决
AWS EC2 替换公钥后SSH连接失败排查解决步骤
1. 修复SSH相关文件权限(最高概率诱因)
SSH服务对密钥相关文件/目录的权限有严格要求,权限不匹配会直接拒绝公钥认证,你在其他实例上修改文件后大概率属主、权限不符合要求:
- 正确权限要求:
/home/ec2-user/.ssh目录:权限700,属主属组为ec2-user:ec2-user/home/ec2-user/.ssh/authorized_keys文件:权限600,属主属组为ec2-user:ec2-user/root/.ssh目录:权限700,属主属组为root:root/root/.ssh/authorized_keys文件:权限600,属主属组为root:root
- 修复方法:将系统卷重新挂载到其他正常实例,假设挂载路径为
/mnt,执行以下命令:
# 修复ec2-user对应权限 chown -R 1000:1000 /mnt/home/ec2-user/.ssh chmod 700 /mnt/home/ec2-user/.ssh chmod 600 /mnt/home/ec2-user/.ssh/authorized_keys # 修复root对应权限 chown -R root:root /mnt/root/.ssh chmod 700 /mnt/root/.ssh chmod 600 /mnt/root/.ssh/authorized_keys
注:EC2默认
ec2-user的UID为1000,跨实例挂载时直接指定UID/GID可以避免跨实例用户名不一致的问题。
2. 验证公钥格式与配对关系
- 写入
authorized_keys的公钥必须为完整单行内容,无多余换行、空格,格式为ssh-rsa [公钥主体内容] [可选备注] - 确认本地使用的私钥和写入的公钥为同一密钥对,不要混用不同密钥对的公私钥
3. 验证实例启动与网络配置
- 系统卷挂载回原实例时,必须将挂载点设置为
/(根分区),挂载点配置错误会导致实例无法正常启动 - 确认实例安全组入方向开放22端口,允许你当前客户端IP访问
- 确认实例启动后2项状态检查全部通过,若系统状态检查失败,可停止实例后重新启动(非重启操作,触发物理机调度迁移)
4. 排查SSH服务配置
如果以上操作完成仍无法连接,可再次挂载系统卷到其他实例,检查/mnt/etc/ssh/sshd_config配置项:
- 确认
PubkeyAuthentication yes未被注释,公钥认证功能已开启 - 确认
AuthorizedKeysFile .ssh/authorized_keys配置正确,公钥文件路径未被修改 - 若使用root用户登录,确认
PermitRootLogin配置为without-password或yes
内容的提问来源于stack exchange,提问作者shimhg02
相关产品推荐
相关产品推荐

