丢失PEM密钥后,不停止运行中的EC2实例能否重新获取访问权限?
无需停止EC2实例恢复访问的可行方法
以下是几种不用停止实例就能重新获取访问权限的方案,按可行性优先级排序:
1. 使用AWS Systems Manager Session Manager连接
这是最推荐的无密钥访问方式,只要你的实例满足以下前提:
- 实例使用Amazon Linux 2、Amazon Linux AMI 2017.09.0及以上版本(这类系统默认预装SSM Agent);若为其他Linux发行版/Windows,需之前已手动安装过SSM Agent
- 实例关联的IAM角色包含
AmazonSSMManagedInstanceCore权限策略 - 实例安全组允许**出站HTTPS(443端口)**访问AWS服务(或配置了SSM的VPC端点)
操作步骤:
- 打开AWS控制台,进入Systems Manager > Session Manager
- 点击「Start session」,在实例列表中选择目标EC2实例,点击「Start session」
- 进入会话后,切换到目标用户(如
ec2-user或ubuntu),编辑~/.ssh/authorized_keys文件,添加新生成的SSH公钥内容 - 保存后即可用新的.pem密钥通过SSH连接实例
2. 利用EC2串行控制台(有限适用)
仅适用于支持串行控制台的实例类型(大部分现代实例类型均支持),且满足:
- 实例所在AWS区域已启用EC2串行控制台功能
- 你的IAM账号拥有
EC2SerialConsoleAccess权限 - 你知晓实例系统的用户密码(Linux默认无root密码的话,此方法无法直接使用)
操作步骤:
- 进入EC2控制台,选中目标实例,点击「连接」,选择「Serial console」标签页
- 点击「Connect」,在弹出的串行终端中输入系统用户名和密码登录
- 登录后可直接修改
~/.ssh/authorized_keys添加新公钥,或给用户设置密码后用密码登录SSH
3. 通过现有其他访问方式(如果存在)
如果你的实例之前配置过其他远程访问途径:
- Windows实例若开启了RDP且有其他可登录的本地/域账号,可通过RDP登录后修改SSH密钥
- Linux实例若存在其他拥有sudo权限的用户,且你知晓该用户的登录方式(密码或其他密钥),可先登录该用户,再切换到目标用户添加新公钥
内容的提问来源于stack exchange,提问作者Sumit K
相关产品推荐
相关产品推荐

