1. 新开实例B,
2. 把之前实例A的根磁盘作为数据磁盘挂载到实例B
3. 挂载磁盘后,直接修改文件,添加你的KEY
4. 把磁盘卸载后,作为根磁盘挂载回实例A
5. 启动实例A,可以登录了
原文:
https://www.zhihu.com/question/30577355
------------------
如果在首次启动后丢失了 SSH 密钥对,该如何连接到 Amazon EC2 实例?
https://aws.amazon.com/cn/premiumsupport/knowledge-center/user-data-replace-key-pair-ec2/
解决方法
警告:在开始执行此过程之前,请注意以下事项:
此过程需要停止和启动您的 EC2 实例。请注意,实例存储卷中的数据将丢失。有关更多信息,请参阅确定实例的根设备类型。请务必备份您想保存在实例存储卷上的所有数据。
停止并重新启动实例会更改实例的公有 IP 地址。在将外部流量路由到您的实例时,最佳做法是使用弹性 IP 地址而不是公有 IP 地址。
方法 1:输入用户数据
1. 创建新的密钥对。
2. 如果您在 Amazon EC2 控制台中创建私有密钥,请检索密钥对中的公钥。
3. 打开 Amazon EC2 控制台。
4. 停止您的实例。
5. 依次选择操作、实例设置和查看/更改用户数据。
6. 将以下脚本复制到查看/更改用户数据对话框中:
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: username
ssh-authorized-keys:
- PublicKeypair
将 username 替换为您的用户名,如 ec2-user。您可以输入默认用户名,或者如果先前已为该实例设置了自定义用户名,则输入此用户名。有关默认用户名的列表,请参阅连接到实例的一般先决条件。
将 PublicKeypair 替换为第 2 步中检索到的公钥。确保输入以 ssh-rsa 开头的完整公钥。
7. 选择保存。
8. 启动您的实例。(公网IP会改变)
9. cloud-init 阶段完成后,请验证公钥是否已被替换。
重要提示:由于脚本包含密钥对,请删除用户数据字段中的脚本。
10. 停止您的实例。
11. 依次选择操作、实例设置和查看/更改用户数据。
12. 删除查看/更改用户数据对话框中的所有文本,然后选择保存。
13. 启动您的实例。
注意:如果您的实例为 Amazon Linux 2 2.0.20190618 或更高版本,则可以使用 EC2 Instance Connect 连接到该实例。
方法 2:使用 AWS Systems Manager
如果您无法访问的实例在 AWS Systems Manager 中被列为托管实例,则可以使用 AWSSupport-ResetAccess 文档从丢失密钥对的场景中恢复。该自动化文档在指定的 EC2 实例上使用适用于 Linux 的 EC2Rescue 工具来自动生成并添加新的 SSH(公有/私有)密钥对。
您的实例的新 SSH 私钥已加密并保存在 AWS Systems Manager Parameter Store 中。参数名称为 /ec2rl/openssh/instance_id/key。使用此参数的值作为内容创建一个新的 .pem 文件,并将其用于连接您无法访问的实例。
注意:自动化工作流程会创建一个备份且启用密码的 Amazon 系统映像 (AMI)。新的 AMI 不会自动删除,而是保留在您的账户中。
要找到这些 AMI:
1. 打开 Amazon EC2 控制台,然后选择 AMI。
2. 在搜索字段中输入自动化执行 ID。
---------------
Connecting to your Linux instance if you lose your private key
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/replacing-lost-key-pair.html
Steps for connecting to an EBS-backed instance with a different key pair
Step 1: Create a new key pair
Step 2: Get information about the original instance and its root volume
Step 3: Stop the original instance
Step 4: Launch a temporary instance
Step 5: Detach the root volume from the original instance and attach it to the temporary instance
Step 6: Add the new public key to authorized_keys on the original volume mounted to the temporary instance
Step 7: Unmount and detach the original volume from the temporary instance, and reattach it to the original instance
Step 8: Connect to the original instance using the new key pair
Step 9: Clean up
[
本帖最后由 linda 于 2020-10-23 16:41 编辑 ]