在 Amazon EC2 上,是不是可以将密钥对重新分配给已运行的实例?

Posted

技术标签:

【中文标题】在 Amazon EC2 上,是不是可以将密钥对重新分配给已运行的实例?【英文标题】:On Amazon EC2 is it possible to reassign a keypair to an already running instance?在 Amazon EC2 上,是否可以将密钥对重新分配给已运行的实例? 【发布时间】:2011-01-12 00:10:32 【问题描述】:

在 Amazon EC2 上是否可以将密钥对重新分配给已运行的实例?

我遇到了特定密钥对的问题,想知道是否有办法通过重新分配来修复它。

谢谢

【问题讨论】:

forums.aws.amazon.com/thread.jspa?threadID=52593 Change key pair for ec2 instance的可能重复 【参考方案1】:

我们能够提出的最佳解决方案是create an AMI from the running instance 并使用新密钥对从该 AMI 启动一个新实例。

我们启动的每个实例都基于一个自定义 AMI,我们为此以及许多其他原因维护该 AMI。

我很想知道是否有人有更好的方法。

【讨论】:

如何为实例刻录 AMI?这是否也捕获了所有数据? 请参阅docs.amazonwebservices.com/AWSEC2/latest/UserGuide/…,了解如何创建自己的 AMI。 这也是我们所做的......唯一困难的部分是我们的亚马逊服务器需要与我们数据中心的物理服务器通信,所以这有点棘手,因为防火墙需要主机名和mac 地址以允许它进入...每次启动都会更改这些信息,即使您可以使用 API 获取该信息,我也从未找到一种方法以编程方式使用这些指令访问数据中心防火墙。我最终使用 API 处理所有内容,然后使用 powershell 脚本重命名并重新启动计算机,使其符合我们的防火墙许可。【参考方案2】:

如果您使用的是 linux 服务器,您可以分离磁盘并将它们挂载到另一个实例上以找出问题所在。

首先关闭问题服务器。记下设备名称(可能是 /dev/sda1)并分离磁盘。

然后使用新的密钥对创建一个新实例(我们称之为救援实例),并将您分离的磁盘附加为附加磁盘(不要替换救援实例的磁盘)。

然后使用 ssh 登录救援实例并挂载磁盘。在新安装的磁盘主文件夹中的主用户帐户中,有一个名为 .ssh 的文件夹,其中包含文件 authorized_keys(例如 /mnt/home/ubuntu/.ssh/authorized_keys)。

authorized_keys 文件可以包含多个公共密钥,每个公共密钥都在它自己的行上。检查 .ssh 文件夹和父文件夹的权限,两者都应该只允许所有者写入。我认为组和世界需要读取权限。 .ssh 中的任何私钥都应具有 600 权限(用户只读和只写)。

这包含来自原始密钥对的公钥。将此替换为您的新公钥(或使用新公钥添加新行),然后关闭救援实例,分离磁盘并将其附加到具有原始设备名称(可能是 /dev/sda1)的问题实例。

启动,您应该能够使用新密钥对中的私钥登录。

【讨论】:

【参考方案3】:

可能...只是根据我在一些情况下所做的猜测:

    使用 ssh 登录实例。如果这就是问题所在,那你就卡住了 SFTP 来自新对的公钥并将其放入 .ssh 授权密钥中 重启sshd

现在,尝试使用与您放置的公钥匹配的私钥进行访问。

但我担心你遇到的问题是,当 AWS 放置的这对出现问题时,你会遇到问题。那里没有帮助。

【讨论】:

以上是关于在 Amazon EC2 上,是不是可以将密钥对重新分配给已运行的实例?的主要内容,如果未能解决你的问题,请参考以下文章

通过SecureCRT访问亚马逊Amazon EC2主机

Amazon EC2 密钥对

Amazon AWS EC2 已删除密钥被锁定在根目录之外

ssh - Amazon EC2 上的权限被拒绝(公钥)

在 Windows 中使用 PuTTY SSH 到 Amazon EC2 实例

Amazon EC2 的名词解释