我正在使用一些已启动并正在运行的 Amazon EC2 服务器,我需要通过 SSH 进入这些服务器。我没有在首次设置服务器时生成的任何密钥(在我来这里之前很久就有人生成了)。如果没有密钥文件,我还能进入服务器吗?
到目前为止,我已经尝试了很多方法通过 SSH 进入该框,包括在 EC2 仪表板中生成新的密钥对,但似乎没有任何效果。此 Amazon AWS 支持帖子和这个答案似乎表明我运气不佳,除非我想为当前服务器创建 AMI,然后使用它来实例化一个全新的 EC2 服务器实例(只是为了获取当时生成的 .pem 文件)。这真的是我现在唯一能进入的方法吗?!
答案1
简而言之:是的,你可以,但是必须付出一些努力。
您需要执行以下操作:
(对于这些步骤,假设您难以连接的机器名为 server-01。)
首先,在开始这些步骤之前,请先对您的服务器进行快照。
- 启动一个新的临时实例。将其命名为 server-02。
- 停止 server-01。不要终止它,只是停止它。
- 从 server-01取消连接根 (
/
) EBS 卷,然后将其附加到 server-02,如下所示/dev/sdb
。 - 登录 server-02,然后运行:
$ mkdir /mnt/temp && mount /dev/sdb /mnt/temp
。这会将 server-01 的根分区挂载到(临时)server-02 中。 - 现在您应该能够:
$ vi /home/<user>/.ssh/authorized_keys
复制/粘贴您的公钥。完成后,保存并关闭文件。 - 现在运行:
$ cd / && umount /mnt/temp
从 server-02 卸载 server-01 的根分区。 - 现在,只需从 server-02 取消连接该卷,将其重新连接到 server-01,然后启动 server-01。当它启动时,您应该能够再次 ssh 登录。
答案2
在任何人尝试之前只需提示欧洲经济合作与发展组织的回答是,
如果你还没有运行iptables save
或iptables-save
命令来保存配置,那么只需重新启动服务器即可。引用此答案询问Ubuntu,我了解到,iptables
除非您明确将其保存到配置文件中,否则它会将您的配置保存在 RAM 本身中。
EC2 实例可以从 EC2 仪表板轻松重启,或者aws-cli