我似乎无法find删除原始密钥对后,将新创build的密钥对分配给amazon ec2实例的选项。 我想“拒绝”第一个密钥对访问实例,我认为我成功了,但是,我无法用另一个密钥对重新分配实例。
在运行实例时指定密钥对时,大多数公用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密钥pipe理,不是特定于EC2的。 这是你的服务器安全的关键,所以了解你在做什么是很重要的。 阅读ssh,以确保你安全地做到这一点。
警告! 确保在终止用于编辑文件的现有ssh会话之前,在单独的terminal中使用新密钥testingssh! 如果您破坏authorized_keys文件,则可能无法连接到实例。
确保你将public ssh key添加到了authorized_keys文件中,而不是private ssh key! 如果您将私钥ssh保存到KEYPAIR.pem ,那么这里有一个命令会输出相应的公钥:
ssh-keygen -y -f KEYPAIR.pem
如果上面看起来对你来说太复杂了,那么用新的密钥对指定一个新的实例就可以了。 无论如何,您应始终拥有一个可以启动replace实例的过程,因为您的现有实例可能随时失败。
在相关主题中,我build议使用您自己的ssh密钥,而不是让Amazon为您生成密钥对。 它使事情变得更容易。 这里有一篇关于这个话题的文章:
将个人ssh密钥上传到Amazon EC2
http://alestic.com/2010/10/ec2-ssh-keys
我不相信有一种方法可以为实例指定一个新的密钥对,但是可以从当前实例创build一个AMI图像,然后创build一个新的AMI实例,在创build时为其分配一个新的密钥对。 一旦新的实例启动并运行,就停止/终止旧的实例。
新实例将具有与旧实例不同的IP地址。 如果这是一个问题,您可能需要为旧实例分配一个弹性IP,然后,当您准备好时,将弹性IP重新分配给新实例。
我的理解是,只有在创build新实例时,Amazon才会将您的密钥对的公钥添加到实例中。
第二种select是在EC2实例上replace丢失的密钥对,只要它是EBS支持的实例即可。 以下链接可能有所帮助:
更换-失密钥对