如果从实例创build时没有.pem文件,我可以通过SSH连接到我的Amazon EC2服务器实例吗?

我正在使用一些已启动并正在运行的Amazon EC2服务器,并且需要SSH进入服务器。 我没有任何在服务器第一次build立时产生的密钥(在我到达这里之前很久以前就有人这样做了)。 我还可以在没有密钥文件的情况下进入服务器吗?

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

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

您需要执行以下操作:

(对于这些步骤,假设您无法连接的计算机称为server-01。)

首先,在开始这些步骤之前,请拍一下你的服务器的快照。

  1. 开始一个新的临时实例。 叫它服务器02。
  2. 停止服务器-01。 不要终止它,只要停止它。
  3. 从服务器01上取消挂接根( / )EBS卷,并将其作为/dev/sdb附加到server-02上。
  4. login到server-02,然后运行: $ mkdir /mnt/temp && mount /dev/sdb /mnt/temp 。 这将在(临时)服务器-02内安装server-01的根分区。
  5. 现在你应该能够: $ vi /home/<user>/.ssh/authorized_keys并复制/粘贴你的公钥。 当你这样做,保存并closures文件。
  6. 现在运行: $ cd / && umount /mnt/temp从server-02卸载server-01的根分区。
  7. 现在,只需从server-02上取下该卷,再将它连接到server-01,然后启动server-01。 当它启动时,你应该能够再次ssh。