如何在AWS管理控制台中更改ec2实例的密钥对?我可以停止实例,我可以创建新的密钥对,但我没有看到任何链接来修改实例的密钥对。


当前回答

这个答案是有用的情况下,您不再有SSH访问现有的服务器(即您丢失了您的私钥)。

如果您仍然拥有SSH访问权限,请使用下面的答案之一。

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#replacing-lost-key-pair

以下是我所做的,感谢Eric Hammond的博客文章:

停止正在运行的EC2实例 分离它的/dev/xvda1卷(我们称它为卷A)—请参见这里 开始新的t1。microec2实例,使用我的新密钥对。确保在相同的子网中创建它,否则将不得不终止实例并重新创建它。-请看这里 将卷A挂载到新的微实例,如/dev/xvdf(或/dev/sdf) SSH到新的微实例,将卷A挂载到/mnt/tmp

$ sudo mkdir /mnt/tmp; sudo mount /dev/xvdf1 /mnt/tmp

~ /副本。Ssh /authorized_keys到/mnt/tmp/home/ubuntu/.ssh/authorized_keys 注销 终止微实例 从它分离卷A 将卷A挂回主实例为/dev/xvda 启动主实例 像以前一样登录,使用新的.pem文件

就是这样。

其他回答

我的问题是,我尝试使用IP而不是公共DNS。然后我尝试了公共DNS和它的解决

步骤:

创建新密钥,例如使用AWS控制台,PuTTY密钥生成器,或ssh-keygen 停止实例 设置实例用户数据以将公钥推送到服务器 启动实例

#cloud-config
cloud_final_modules:
- [once]
bootcmd:
 - echo 'ssh-rsa AAAAB3Nz...' > /home/USERNAME/.ssh/authorized_keys

其中USERNAME是机器的预期用户名。可以从AWS获得默认用户名列表。

来自AWS的分步说明

替代解决方案。如果你有唯一的访问服务器。在这种情况下,不要从AWS控制台删除pem文件。只需删除pem访问密钥从sudo纳米~/。Ssh / authized_keys,并添加系统公共Ssh密钥。现在您可以访问ssh user@i.p

你能做什么…

创建一个新的实例配置文件/角色,其中附加AmazonEC2RoleForSSM策略。 将此实例概要文件附加到实例。 使用SSM会话管理器登录到实例。 在本地机器上使用keygen创建密钥对。 使用SSM会话将该密钥的公共部分推到实例上。 利润。

我注意到,当由Elastic Beanstalk管理时,您可以更改活动的EC2密钥对。2 .在“Elastic Beanstalk > Configuration > Security”下的“EC2密钥对”下拉框中选择新密钥。你会看到这条消息询问你是否确定:

EC2KeyName:对选项EC2KeyName设置的更改将不会生效 立即。您现有的每个EC2实例都将被替换 届时,您的新设置将生效。

当我这样做时,我的实例已经终止了。然后开始,结束,再开始。显然,“替换”意味着终止并创建一个新实例。如果您已经修改了引导卷,那么首先创建一个AMI,然后在相同的Elastic Beanstalk > Configuration > Instances表单中指定这个AMI作为自定义AMI ID。这也会对替换EC2实例发出警告。

在修改了EC2密钥对和Custom AMI ID并看到有关这两者的警告之后,单击Save继续。

请记住,当重新创建实例时,IP地址会发生变化,因此您需要从EC2控制台检索一个新的IP地址,以便在通过SSH连接时使用。