无法在亚马逊 ec2 实例上更改分配的密钥对

Oh *_*oon 4 ssh amazon-ec2

删除原始密钥对后,我似乎找不到将新创建的密钥对分配给亚马逊 ec2 实例的选项。我想“拒绝”第一个密钥对访问实例,我认为我成功了,但是,我无法用另一个密钥对重新分配实例。

Eri*_*ond 9

当您在运行实例时指定密钥对时,大多数公共 AMI 会将该密钥对的公共 ssh 密钥复制到.ssh/authorized_keys主用户账户主目录中的文件中。这仅在第一次启动时完成。

用户帐户因 Linux 发行版和 AMI 发布者而异。一些常见的用户帐户包括rootec2-userubuntu,因此默认文件可能是以下之一:

/root/.ssh/authorized_keys
/home/ec2-user/.ssh/authorized_keys
/home/ubuntu/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)

注意:上述行为不是 EC2 强制执行的,而只是大多数流行的公共 AMI 实施的事实上的标准。

如果您想阻止初始密钥对访问正在运行的实例,只需编辑该.ssh/authorized_keys文件,删除该公共 ssh 密钥条目,然后添加您想要访问的公共 ssh 密钥。

这是标准的 ssh 密钥管理,并非特定于 EC2。这是服务器安全的关键,因此了解您在做什么很重要。阅读 ssh 以确保您安全地执行此操作。

警告!在终止用于编辑文件的现有 ssh 会话之前,请确保在单独的终端中使用新密钥测试 ssh!如果您破坏了authorized_keys文件,您可能会面临无法连接到实例的风险。

确保将公共ssh 密钥添加到authorized_keys文件中,而不是私人ssh 密钥!如果您将私有 ssh 密钥保存到,例如,KEYPAIR.pem那么下面的命令将输出相应的公共密钥:

ssh-keygen -y -f KEYPAIR.pem
Run Code Online (Sandbox Code Playgroud)

如果以上对您来说似乎太复杂,那么可以使用指定的新密钥对启动一个新实例。您应该始终有一个程序能够启动替换实例,因为您现有的实例可能随时出现故障。

在相关主题中,我建议使用您自己的 ssh 密钥,而不是让 Amazon 为您生成密钥对。它使周围的事情变得更容易。这是我写的一篇关于这个主题的文章:

将个人 ssh 密钥上传到 Amazon EC2
http://alestic.com/2010/10/ec2-ssh-keys