如果在创建实例时没有 .pem 文件,我能否通过 SSH 连接到我的 Amazon EC2 服务器实例?

Eri*_*ric 10 amazon-ec2 ssh-keys amazon-web-services

我正在使用一些已启动并正在运行的 Amazon EC2 服务器,我需要通过 SSH 连接到这些服务器。我没有第一次设置服务器时生成的任何密钥(在我到达这里之前很久就有人做了)。没有密钥文件我还能进入服务器吗?

FWIW 到目前为止,我已经尝试了很多方法来将 SSH 连接到盒子中,包括在 EC2 仪表板中生成新的密钥对,但似乎没有任何效果。这个亚马逊 AWS 支持帖子这个答案似乎表明我运气不好,除非我想为我当前的服务器制作一个 AMI 然后用它来实例化一个全新的 EC2 服务器实例(只是为了生成 .pem 文件那时候)。这真的是我现在进入盒子的唯一方法吗?!

EEA*_*EAA 26

简而言之:是的,你可以,但不是没有一些工作。

您需要执行以下操作:

(对于这些步骤,假设您在连接时遇到问题的机器名为 server-01。)

首先,在开始这些步骤之前,拍摄您的服务器的快照。

  1. 启动一个新的临时实例。称之为 server-02。
  2. 停止 server-01。不要终止它,只是停止它。
  3. /从 server-01 取消附加根 ( ) EBS 卷,并将其附加到 server-02,例如/dev/sdb
  4. 登录到服务器02,并运行:$ mkdir /mnt/temp && mount /dev/sdb /mnt/temp。这将在(临时)server-02 中挂载 server-01 的根分区。
  5. 现在您应该能够:$ vi /home/<user>/.ssh/authorized_keys并复制/粘贴您的公钥。完成后,保存并关闭文件。
  6. 现在运行:$ cd / && umount /mnt/temp从 server-02 卸载 server-01 的根分区。
  7. 现在,只需从 server-02 取消附加该卷,将其附加回 server-01,然后启动 server-01。当它启动时,您应该能够再次通过 ssh 进入。

  • 只是为了补充这个出色的答案,我发现了这篇博客文章,其中介绍了如何从命令行执行此操作。http://alestic.com/2011/02/ec2-fix-ebs-root (2认同)