恢复丢失的 AWS EC2 密钥对
Posted
技术标签:
【中文标题】恢复丢失的 AWS EC2 密钥对【英文标题】:Recovering lost AWS EC2 Key Pairs 【发布时间】:2018-09-19 20:19:17 【问题描述】:AWS 新手在这里。我在我的 AWS 账户下创建了几个 EC2 实例,并为所有这些实例重复使用相同的密钥对。我相信 (IIRC) 我从 AWS 内部生成了密钥对,但这可能是错误的。
在过去的这个周末,我卖掉了我的旧笔记本电脑(在彻底擦除了硬盘之后)并买了一台新笔记本电脑。我现在才想起 (:facepalm
) 我忘记将所有 SSH 私钥复制到闪存驱动器并且我不再拥有它们。
我想要/需要做的就是通过 SSH 连接到我的 EC2 实例,但要做到这一点,我需要我的 SSH 密钥。我仍然可以访问 AWS 控制台,并且可以登录并查看我的所有 EC2 密钥对。但我没有看到任何下载它们或使用新密钥对更新我的 EC2 实例的选项。
所以我问:
-
我是否可以通过某种方式恢复现有的密钥对,以便通过 SSH 连接到我的 EC2 实例?我可以再次登录 AWS 控制台。 如果没有,那么……
是否可以为我现有的密钥对生成另一个密钥对并“换掉”?
我真的不想拆除旧的 EC2 实例并重新配置新的实例,这需要我大约一周的时间才能完成(尽管可以说,这对我很有帮助!)。
【问题讨论】:
【参考方案1】:您可以使用用户数据或系统管理员替换新密钥。
使用用户数据:
从 AWS EC2 控制台创建一个新的密钥对
使用以下 cmd 从下载的密钥对生成公钥: ssh-keygen -y -f .pem
停止 EC2 实例并编辑实例的用户数据并传递以下脚本并启动实例
Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"
#cloud-config
cloud_final_modules:
- [users-groups, once]
users:
- name:ec2-user
ssh-authorized-keys:
- <**Paste the Public key here**>
现在,您将能够使用下载的密钥对登录 EC2 实例。
使用系统管理器:
-
如果实例是 AWS Systems Manager 中的托管实例,您可以使用 AWSSupport-ResetAccess 文档来恢复丢失的密钥对。
打开 AWS Systems Manager 控制台,在左侧导航窗格中选择自动化,单击执行自动化。在自动化文档部分选择亚马逊拥有的。在运行手册列表中,搜索 AWSSupport-ResetAccess
在执行自动化文档页面中,选择简单执行。在文档详细信息部分,验证文档版本设置为默认值。在输入参数部分,在参数中指定实例 ID、子网 ID 和实例类型并执行。
自动化完成后,新的 ssh 私钥被保存并加密在参数存储中,参数存储命名为 /ec2rl/openssh//key
您可以参考以下链接了解更详细的步骤:
https://cloudsolutionsonline.blogspot.com/2021/11/connect-to-linux-ec2-instance-if-ssh.html?m=1
【讨论】:
虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review 感谢反馈,提供分步说明【参考方案2】: 第 1 步:转到 IAM。 步骤 2:创建具有权限的策略 “AmazonSSMManagedInstanceCore”。 步骤 3:创建新角色并附加 之前为该角色创建的策略。 第 4 步:转到 EC2,选择 “操作”中的实例 ==>“安全”==>“修改 IAM 角色”选择 创建的角色并保存。 步骤 5:等待 1 小时。这将需要一些 是时候解决了。 第 6 步:选择 EC2,点击“连接”==> “会话管理器” ==> “连接”您将获得与该会话的会话,您可以将新密钥添加到授权密钥。
【讨论】:
【参考方案3】:将 ec2 用户数据更改为多部分 mime。
零件:
云配置cloud_final_modules:
- [scripts-user, always]
shell 脚本
覆盖 /home/ec2-user/.ssh/authorized_keys
参考这篇博文replace ec2 ssh key
【讨论】:
【参考方案4】:重建不应该是必要的。我建议选项 2 更快更容易。
1.> 是否可以更改/附加新密钥?
关闭要访问的 ec2 实例(“目标”)。
创建一个新的(“临时”)实例。
从目标实例中分离主 EBS 卷(注意它当前的连接!)。
在临时实例上附加/装载目标卷。
在已装载的卷上编辑适当的 authorized_keys 文件。
卸载目标卷,然后重新附加到目标 ec2 实例(使用您在分离时记下的配置)
启动目标实例并使用新密钥登录。
删除临时实例
2.> 是的。快照实例。从快照中配置一个新实例,选择不同的密钥(当您在启动向导结束时单击启动时会出现密钥对弹出窗口)
【讨论】:
有趣的方法以上是关于恢复丢失的 AWS EC2 密钥对的主要内容,如果未能解决你的问题,请参考以下文章
在 ec2 实例中部署 eb 后,ruby 应用程序 aws 数据丢失