AWS实例PEM/PPK文件管理:已暴露PEM文件的失效及新文件创建方法
如何失效暴露的AWS EC2实例PEM密钥对并创建新密钥对
别慌,我来一步步教你怎么处理这个问题——既要废掉暴露的旧PEM,又要给现有实例配上新的密钥对:
一、先让旧PEM彻底失效(无法登录实例)
1. 移除实例上的旧公钥
首先你得能登录到EC2实例(用旧的PEM文件,只要现在还能连得上):
- 登录后,打开
~/.ssh/authorized_keys文件(不同系统用户名对应路径有差异:Ubuntu是ubuntu用户的~/.ssh/authorized_keys,Amazon Linux是ec2-user用户的对应路径,root用户则是/root/.ssh/authorized_keys) - 找到旧密钥对对应的公钥行,删掉它并保存退出。这一步做完,旧PEM就再也没法登录这个实例了。
2. 在AWS控制台删除旧密钥对
旧公钥已经从实例移除后,就可以在控制台删掉对应的密钥对了:
- 打开EC2控制台,左侧导航栏找到「密钥对」
- 选中那个暴露的密钥对,点击顶部的「操作」→「删除」,确认删除即可。
二、给现有实例创建并关联新的PEM密钥对
AWS没法直接给运行中的实例“替换”密钥对,我们需要手动把新密钥对的公钥添加到实例里:
1. 创建新的密钥对
- 还是在EC2控制台的「密钥对」页面,点击「创建密钥对」
- 输入一个好记的名称(比如
new-production-secure-key),密钥对类型选「RSA」,格式选.pem,然后点击「创建」 - 浏览器会自动下载新的PEM文件,一定要把它存在安全的地方,而且本地要设置正确的权限(SSH要求密钥文件权限不能太开放):
chmod 600 /path/to/new-key.pem
2. 获取新密钥对的公钥内容
有两种方式拿到公钥:
- 方式一:在EC2控制台的密钥对列表里,点击新密钥对的名称,复制「公钥」字段里的完整内容
- 方式二:在本地用命令导出公钥:
复制命令输出的整个字符串即可。ssh-keygen -y -f /path/to/new-key.pem
3. 把新公钥添加到EC2实例
如果你还能通过旧PEM登录实例,直接登录后编辑~/.ssh/authorized_keys,把刚才复制的新公钥粘贴到文件末尾,保存退出即可。
如果旧PEM已经没法登录了(比如你已经删掉了实例上的旧公钥),可以用AWS Systems Manager Session Manager来连接实例(前提是实例已经配置了SSM权限并能联网到SSM服务):
- 打开EC2控制台,找到目标实例,右键点击「连接」→选择「Session Manager」→「连接」
- 进入会话后,同样编辑
~/.ssh/authorized_keys添加新公钥。
4. 验证新PEM的可用性
用新PEM尝试登录实例,确保能成功:
ssh -i /path/to/new-key.pem ec2-user@<你的实例公网IP/域名>
(记得替换成你实例的实际用户名和公网IP/域名)
额外注意事项
- 如果有多个EC2实例使用了那个暴露的密钥对,要逐个重复上面的步骤,确保所有实例都移除旧公钥并添加新公钥
- 新PEM文件一定要妥善保管,别再让无关人员接触到
- 如果实例没有配置SSM,且旧PEM已经失效,那你可能需要停止实例,挂载根卷到另一个实例上修改
authorized_keys,这个操作相对复杂,要是遇到这种情况可以再问细节。
内容的提问来源于stack exchange,提问作者Sagar
相关产品推荐
相关产品推荐

