删除原始密钥对后,我似乎找不到将新创建的密钥对分配给 amazon ec2 实例的选项。我想“拒绝”第一个密钥对访问实例,我认为我成功了,但是,我无法用另一个密钥对重新分配实例。
答案1
当您在运行实例时指定密钥对时,大多数公共 AMI 会将该密钥对的公共 SSH 密钥复制到.ssh/authorized_keys
主用户账户主目录中的文件中。此操作仅在首次启动时完成。
用户账户因 Linux 发行版和 AMI 发布者而异。一些常见的用户账户包括root
、ec2-user
和ubuntu
,因此默认文件可能是以下之一:
/root/.ssh/authorized_keys
/home/ec2-user/.ssh/authorized_keys
/home/ubuntu/.ssh/authorized_keys
注意:上述行为不是由 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
如果以上内容对您来说太复杂,那么使用指定的新密钥对启动新实例是可以的。无论如何,您都应该有一个程序来启动替换实例,因为您现有的实例可能随时失败。
在相关主题中,我建议使用您自己的 ssh 密钥,而不是让 Amazon 为您生成密钥对。这样可以让事情变得更容易。这是我就该主题撰写的一篇文章:
将个人 ssh 密钥上传到 Amazon EC2
http://alestic.com/2010/10/ec2-ssh-keys
答案2
我不认为有办法为实例分配新的密钥对,但您可以从当前实例创建 AMI 映像,然后创建新 AMI 的实例,并在创建时为其分配新的密钥对。新实例启动并运行后,只需停止/终止旧实例即可。
新实例的 IP 地址与旧实例不同。如果这是个问题,您可能需要为旧实例分配一个弹性 IP,然后在您准备好后,将弹性 IP 重新分配给新实例。
据我了解,亚马逊仅在创建新实例时将您的密钥对的公钥插入到实例中。
答案3
第二种选择是更换 EC2 实例上丢失的密钥对,只要它是 EBS 支持的实例。以下链接可能会有所帮助: