如何恢复AWS上运行MySQL的Ubuntu EC2实例的SSH密钥
找回EC2实例SSH登录权限的可行方案
针对你丢失第4台Ubuntu 19 EC2实例SSH私钥的情况,结合你提供的实例正常运行、存在包含SSH密钥的AMI这些信息,以下是几个快速恢复登录权限的方案:
方案一:通过挂载根卷重置authorized_keys
这是最直接的方法,利用你现有的SSH密钥对重新配置目标实例的登录权限:
- 安全停止目标实例:先登录MySQL执行
mysqladmin shutdown,再通过AWS控制台停止实例,避免数据损坏。 - 分离根卷:在EC2控制台找到目标实例,分离其根卷(通常是/dev/sda1)。
- 创建临时实例:使用你持有的其中一个SSH密钥对,在同区域创建一台Ubuntu 19临时EC2实例。
- 挂载根卷到临时实例:将分离的根卷挂载到临时实例的某个挂载点(比如
/mnt/recovery),挂载命令示例:sudo mkdir -p /mnt/recovery sudo mount /dev/xvdf /mnt/recovery # 这里的xvdf是挂载后的设备名,以实际为准 - 修改authorized_keys:编辑挂载卷中的授权文件,添加你现有密钥对的公钥:
将你现有私钥对应的公钥内容粘贴进去,保存退出。sudo nano /mnt/recovery/home/ubuntu/.ssh/authorized_keys - 恢复根卷并启动实例:卸载挂载的卷(
sudo umount /mnt/recovery),将根卷重新挂载回目标实例,启动实例后即可用你现有密钥对登录。
方案二:利用AWS Systems Manager Session Manager登录(无需SSH密钥)
如果目标实例满足以下条件,可以直接通过AWS控制台登录:
- 实例已安装SSM Agent(Ubuntu 19的官方AMI默认预装)
- 实例关联的IAM角色包含
AmazonSSMManagedInstanceCore权限 - 实例处于可以访问AWS SSM服务的网络环境(比如公有子网或有NAT网关的私有子网)
满足条件后,直接在AWS控制台进入Systems Manager > Session Manager,选择目标实例启动会话,登录后即可修改/home/ubuntu/.ssh/authorized_keys添加你的现有密钥,后续就能正常SSH登录。
注意事项
- 操作前务必为目标实例的根卷创建快照,防止数据丢失。
- 重启目标实例后,验证MySQL服务是否正常启动,确保数据完整性。
内容的提问来源于stack exchange,提问作者ChrisFNZ
相关产品推荐
相关产品推荐

