如果在首次启动后丢失了 SSH 密钥对,该如何连接到 Amazon EC2 实例?

上次更新日期:2021 年 2 月 1 日

我想连接到我的 Amazon Elastic Compute Cloud (Amazon EC2) 实例,但是丢失了 SSH 密钥对。如何连接到实例?

解决方法

警告:在开始执行此过程之前,请注意以下事项:

方法 1:输入用户数据

1.    创建新密钥对

2.    如果您在 Amazon EC2 控制台中创建私有密钥,请检索密钥对中的公钥

3.    打开 Amazon EC2 控制台

4.    停止您的实例

5.    依次选择 Actions (操作)Instance Settings (实例设置)Edit user data (编辑用户数据)

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.    选择 Save(保存)。

8.    启动您的实例

9.    cloud-init 阶段完成后,请验证公钥是否已被替换

重要提示:由于脚本包含密钥对,请删除用户数据字段中的脚本。

10.    停止您的实例

11.    依次选择 Actions(操作)Instance Settings(实例设置)Edit user data(编辑用户数据)

12.    删除Edit user data(编辑用户数据)对话框中的所有文本,然后选择 Save(保存)

13.    启动您的实例

方法 2:使用 AWS Systems Manager

如果您的实例是 AWS Systems Manager 中的托管实例,则可以使用 AWSSupport-ResetAccess 文档恢复丢失的密钥对。通过在指定的 EC2 实例上使用适用于 Linux 的 EC2 Rescue 工具,AWSSupportResetAccess 将自动生成并添加新的 SSH(公共/私有)密钥对。

您的实例的新 SSH 私钥已加密并保存在 AWS Systems Manager Parameter Store 中。参数名称为 /ec2rl/openssh/instance_id/key。 使用此参数的值作为内容创建一个新的 .pem 文件,并将其用于连接您无法访问的实例。

注意:自动化工作流程会创建一个备份且启用密码的 Amazon 系统映像 (AMI)。新的 AMI 不会自动删除,而是保留在您的账户中。

要找到这些 AMI:

1.    打开 Amazon EC2 控制台,然后选择 AMI

2.    在搜索字段中输入自动化执行 ID。

方法 3:使用 Amazon EC2 实例连接

如果您的实例为 Amazon Linux 2 2.0.20190618 或更高版本,则可以使用 EC2 Instance Connect 连接到该实例。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?