恢复丢失的 AWS EC2 密钥对
Recovering lost AWS EC2 Key Pairs
这里是 AWS 菜鸟。我在我的 AWS 账户下创建了几个 EC2 实例,并为所有实例重复使用相同的密钥对。我相信 (IIRC) 我从 AWS 内部生成了密钥对,但这可能是错误的。
在过去的这个周末,我卖掉了我的旧笔记本电脑(在完全擦除硬盘后)并买了一台新笔记本电脑。我现在想起来 (:facepalm
) 我忘记将我所有的 SSH 私钥复制到闪存驱动器并且我不再拥有它们了。
我 want/need 要做的就是通过 SSH 连接到我的 EC2 实例,但为此我需要我的 SSH 密钥。我仍然可以访问 AWS 控制台,并且可以登录并查看我的所有 EC2 密钥对。但是我没有看到任何用于下载它们或使用新密钥对更新我的 EC2 实例的选项。
所以我问:
- 我是否可以通过某种方式恢复我现有的密钥对,以便我可以通过 SSH 连接到我的 EC2 实例?我可以再次登录 AWS 控制台。 如果没有,那么...
- 是否可以为我现有的密钥对生成另一个密钥对和"swap it out"?
我真的不想拆除我的旧 EC2 实例并重新配置新实例,这将花费我大约一周的时间(尽管可以说,这对我来说是对的!)。
重建不应该是必要的。我建议选项 2 因为它更快更容易。
1.> 可以 change/append 一个新密钥吗?
关闭您要访问的 ec2 实例 ("target")。
创建一个新的 ("temporary") 实例。
从目标实例分离主 EBS 卷(注意其当前附件!)。
Attach/mount 临时实例上的目标卷。
编辑已安装卷上的适当 authorized_keys 文件。
卸载目标卷,并重新连接到目标 ec2 实例(使用分离时记下的配置)
启动目标实例并使用新密钥登录。
删除临时实例
2.> 是的。快照实例。从选择不同密钥的快照提供新实例(在启动向导结束时单击启动时会出现密钥对弹出窗口)
将 ec2 用户数据更改为多部分 mime。
零件:
- 云配置
cloud_final_modules:
- [scripts-user, always]
</pre>
- shell 脚本
覆盖/home/ec2-user/.ssh/authorized_keys
参考这篇博文replace ec2 ssh key
- 第 1 步:转到 IAM。
- 第 2 步:创建具有权限的策略
“AmazonSSMManagedInstanceCore”。
- 第 3 步:创建新角色并附加
之前为该角色创建的策略。
- 第 4 步:转到 EC2,select
“操作”中的实例 ==> “安全” ==> “修改 IAM 角色” select
创建的角色并保存。
- 第 5 步:等待 1 小时。这需要一些
是时候解决了。
- 第 6 步:Select EC2,点击“连接”==>
“会话管理器”==>“连接”
您将获得一个会话,您可以将新密钥添加到授权密钥中。
您可以使用用户数据或系统管理器替换新密钥。
使用用户数据:
从 AWS EC2 控制台创建新密钥对
使用以下命令从下载的密钥对生成 Public 密钥:
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 控制台,select 左侧导航窗格中的自动化,单击执行自动化。在亚马逊拥有的自动化文档部分 select 中。在 运行 图书列表中,搜索 AWSSupport-ResetAccess
- 在执行自动化文档页面中,选择简单执行。在文档详细信息部分,验证文档版本是否设置为默认。在输入参数部分,在参数中指定实例ID、子网ID和实例类型并执行。
- Automation完成后,新的ssh私钥被保存并加密到parameter store中,parameter store命名为/ec2rl/openssh//key
更详细的步骤可以参考下面link:
https://cloudsolutionsonline.blogspot.com/2021/11/connect-to-linux-ec2-instance-if-ssh.html?m=1
这里是 AWS 菜鸟。我在我的 AWS 账户下创建了几个 EC2 实例,并为所有实例重复使用相同的密钥对。我相信 (IIRC) 我从 AWS 内部生成了密钥对,但这可能是错误的。
在过去的这个周末,我卖掉了我的旧笔记本电脑(在完全擦除硬盘后)并买了一台新笔记本电脑。我现在想起来 (:facepalm
) 我忘记将我所有的 SSH 私钥复制到闪存驱动器并且我不再拥有它们了。
我 want/need 要做的就是通过 SSH 连接到我的 EC2 实例,但为此我需要我的 SSH 密钥。我仍然可以访问 AWS 控制台,并且可以登录并查看我的所有 EC2 密钥对。但是我没有看到任何用于下载它们或使用新密钥对更新我的 EC2 实例的选项。
所以我问:
- 我是否可以通过某种方式恢复我现有的密钥对,以便我可以通过 SSH 连接到我的 EC2 实例?我可以再次登录 AWS 控制台。 如果没有,那么...
- 是否可以为我现有的密钥对生成另一个密钥对和"swap it out"?
我真的不想拆除我的旧 EC2 实例并重新配置新实例,这将花费我大约一周的时间(尽管可以说,这对我来说是对的!)。
重建不应该是必要的。我建议选项 2 因为它更快更容易。
1.> 可以 change/append 一个新密钥吗?
关闭您要访问的 ec2 实例 ("target")。
创建一个新的 ("temporary") 实例。
从目标实例分离主 EBS 卷(注意其当前附件!)。
Attach/mount 临时实例上的目标卷。
编辑已安装卷上的适当 authorized_keys 文件。
卸载目标卷,并重新连接到目标 ec2 实例(使用分离时记下的配置)
启动目标实例并使用新密钥登录。
删除临时实例
2.> 是的。快照实例。从选择不同密钥的快照提供新实例(在启动向导结束时单击启动时会出现密钥对弹出窗口)
将 ec2 用户数据更改为多部分 mime。
零件:
- 云配置
cloud_final_modules:
- [scripts-user, always]
</pre>
- shell 脚本
覆盖/home/ec2-user/.ssh/authorized_keys
参考这篇博文replace ec2 ssh key
- 第 1 步:转到 IAM。
- 第 2 步:创建具有权限的策略 “AmazonSSMManagedInstanceCore”。
- 第 3 步:创建新角色并附加 之前为该角色创建的策略。
- 第 4 步:转到 EC2,select “操作”中的实例 ==> “安全” ==> “修改 IAM 角色” select 创建的角色并保存。
- 第 5 步:等待 1 小时。这需要一些 是时候解决了。
- 第 6 步:Select EC2,点击“连接”==> “会话管理器”==>“连接”
您将获得一个会话,您可以将新密钥添加到授权密钥中。
您可以使用用户数据或系统管理器替换新密钥。
使用用户数据:
从 AWS EC2 控制台创建新密钥对
使用以下命令从下载的密钥对生成 Public 密钥: 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 控制台,select 左侧导航窗格中的自动化,单击执行自动化。在亚马逊拥有的自动化文档部分 select 中。在 运行 图书列表中,搜索 AWSSupport-ResetAccess
- 在执行自动化文档页面中,选择简单执行。在文档详细信息部分,验证文档版本是否设置为默认。在输入参数部分,在参数中指定实例ID、子网ID和实例类型并执行。
- Automation完成后,新的ssh私钥被保存并加密到parameter store中,parameter store命名为/ec2rl/openssh//key
更详细的步骤可以参考下面link:
https://cloudsolutionsonline.blogspot.com/2021/11/connect-to-linux-ec2-instance-if-ssh.html?m=1