如何找回AWS中丢失的PPK文件?
如何找回AWS中丢失的PPK文件?
哎,碰到这种情况确实挺闹心的!首先得给你说清楚:丢失的PPK文件是没法直接找回的——因为AWS在你创建密钥对的时候,只会让你下载一次私钥,之后不会再保存任何副本。不过别慌,咱们可以通过替换实例的密钥对来重新获得SSH访问权限,下面给你两种实用的方法:
方法一:通过EC2控制台替换密钥对(适合能停止实例的场景)
如果你的网站可以短暂停机,这个方法比较稳妥:
- 第一步:先停止目标EC2实例(生产环境的话,记得提前确认停机影响,做好相关通知)
- 第二步:分离实例的根卷:在EC2控制台找到该实例,进入「存储」标签,找到根卷(通常是/dev/sda1或/dev/xvda),点击「分离卷」按提示操作
- 第三步:创建一个临时EC2实例,用你现有的可用密钥对(或者直接新建一个密钥对,一定要下载好对应的.pem文件)
- 第四步:把刚才分离的根卷挂载到临时实例:找到分离的卷,点击「附加卷」,选择临时实例,挂载点设为/dev/sdf这类未被占用的路径
- 第五步:登录临时实例,修改挂载卷的密钥配置:
- 先挂载卷:
sudo mkdir /mnt/tempvol && sudo mount /dev/xvdf1 /mnt/tempvol(挂载路径要和你刚才设的对应,可能需要调整) - 复制临时实例的公钥:
cat /home/ec2-user/.ssh/authorized_keys(如果是Ubuntu系统,路径是/home/ubuntu/.ssh/authorized_keys) - 编辑挂载卷里的authorized_keys:
sudo nano /mnt/tempvol/home/ec2-user/.ssh/authorized_keys,把原来的内容替换成刚才复制的公钥,保存退出
- 先挂载卷:
- 第六步:卸载并分离卷:
sudo umount /mnt/tempvol,然后在控制台分离这个卷 - 第七步:把根卷重新挂载回原EC2实例,启动实例,现在你就能用临时实例对应的PPK文件登录原实例了(如果是新建的密钥对,记得用Puttygen把.pem转换成PPK格式)
方法二:用EC2 Systems Manager(适合不能停止实例的场景)
如果你的实例没法停机,且之前已经配置了SSM代理,这个方法更方便:
- 第一步:确认实例已安装SSM代理(Amazon Linux 2和Amazon Linux AMI默认自带,其他系统可能需要提前安装,没装的话这个方法用不了)
- 第二步:进入AWS控制台的「EC2 Systems Manager」,选择「会话管理器」,点击「启动会话」,选中你的实例启动会话
- 第三步:在会话窗口里,直接编辑
~/.ssh/authorized_keys文件,把新密钥对的公钥内容添加进去(新密钥对可以在EC2控制台创建,下载.pem后转成PPK) - 第四步:保存文件后,你就可以用新的PPK文件通过SSH登录实例了
额外提醒
- 操作前一定要给根卷做个快照!万一操作失误,还能恢复数据
- 新建密钥对后,一定要妥善保存下载的.pem和转换后的PPK文件,别再丢啦😅
备注:内容来源于stack exchange,提问作者spylh9999ggr
相关产品推荐
相关产品推荐

