AWS PEM密钥失效但仍保持EC2连接,寻求有效解决方案
解决EC2 SSH密钥失效问题的实操方案
方案1:把现有PEM密钥添加到EC2的authorized_keys(优先用这个,毕竟现在还连着服务器)
这是最快的修复方式,步骤如下:
- 本地Windows CMD操作:
- 到你的PEM密钥所在文件夹,运行
ssh-keygen -y -f KEY_NAME.pem > KEY_NAME.pub,把私钥转成公钥 - 打开生成的
KEY_NAME.pub,复制里面的全部内容
- 到你的PEM密钥所在文件夹,运行
- 在当前连着的EC2会话里执行:
- 切到ubuntu用户的.ssh目录:
cd ~/.ssh - 编辑authorized_keys:
nano authorized_keys - 把刚才复制的公钥粘到文件最后,按Ctrl+O保存,Ctrl+X退出
- 必须修正权限,不然ssh不认:
chmod 600 ~/.ssh/authorized_keys和chmod 700 ~/.ssh
- 切到ubuntu用户的.ssh目录:
- 现在可以断开连接测试,用命令
ssh -i KEY_NAME.pem ubuntu@IP重新连接,应该就能成功了
方案2:生成新PEM密钥重新访问(方案1走不通时用)
这个方法可行,但注意会替换原有密钥,操作前先停实例(EBS实例的数据不会丢):
- 登录AWS控制台,找到目标EC2实例,先停止它
- 右键实例 → 安全 → 重置密钥对
- 选一个已有的密钥对,或者新建一个并下载到本地
- 启动实例,用新密钥连接:
ssh -i NEW_KEY.pem ubuntu@IP
额外要注意的点
- 本地PEM密钥权限必须对:Windows里右键PEM文件→属性→安全,确保只有你当前用户能读,删掉其他用户的权限
- 别再用
ssh KEY_NAME这种命令了,现在配置乱了,得显式指定密钥文件,用ssh -i 密钥文件名.pem ubuntu@实例IP
内容的提问来源于stack exchange,提问作者apostrophy
相关产品推荐
相关产品推荐

