如何在AWS管理控制台中更改ec2实例的密钥对?我可以停止实例,我可以创建新的密钥对,但我没有看到任何链接来修改实例的密钥对。
当前回答
这是为他们谁有两个不同的pem文件,并出于任何安全目的想要丢弃其中一个。假设我们想要丢弃1。pem
连接到服务器2,从~/.ssh/authorized_keys中复制ssh密钥 在另一个终端上连接服务器1,并将密钥粘贴到~/.ssh/authorized_keys中。现在您将有两个公共ssh密钥 现在,为了增强自信心,尝试使用2.pem连接服务器1。您将能够将服务器1与这两个1连接。Pem和2.pem 现在,注释1。Pem SSH,使用SSH -i连接。pem user@server1
其他回答
这个答案是有用的情况下,您不再有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文件
就是这样。
“authorized_keys”中的“SSH Public Key”不需要旋转根设备,也不需要修改。为此,可以利用userdata将ssh密钥添加到任何实例。为此,首先需要使用AWS控制台或ssh-keygen创建一个新的KeyPair。
ssh-keygen -f YOURKEY.pem -y
这将为您的新SSH KeyPair生成公钥,复制此公钥并在下面的脚本中使用它。
Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"
#cloud-config
cloud_final_modules:
- [scripts-user, always]
--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"
#!/bin/bash
/bin/echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6xigPPA/BAjDPJFflqNuJt5QY5IBeBwkVoow/uBJ8Rorke/GT4KMHJ3Ap2HjsvjYrkQaKANFDfqrizCmb5PfAovUjojvU1M8jYcjkwPG6hIcAXrD5yXdNcZkE7hGK4qf2BRY57E3s25Ay3zKjvdMaTplbJ4yfM0UAccmhKw/SmH0osFhkvQp/wVDzo0PyLErnuLQ5UoMAIYI6TUpOjmTOX9OI/k/zUHOKjHNJ1cFBdpnLTLdsUbvIJbmJ6oxjSrOSTuc5mk7M8HHOJQ9JITGb5LvJgJ9Bcd8gayTXo58BukbkwAX7WsqCmac4OXMNoMOpZ1Cj6BVOOjhluOgYZbLr" >> /home/hardeep/.ssh/authorized_keys
--//
重新启动后,计算机将拥有指定的SSH发布密钥。 请在第一次重启后删除用户数据。阅读更多关于启动时的用户数据。
一旦启动了实例,就无法在元数据级别上更改与该实例关联的密钥对,但是可以更改用于连接该实例的ssh密钥。
在大多数ami上都有一个启动过程,下载公共ssh密钥并将其安装在.ssh/authorized_keys文件中,以便您可以作为该用户使用相应的私有ssh密钥进行ssh登录。
如果您希望更改用于访问实例的ssh密钥,则需要编辑实例本身的authorized_keys文件并将其转换为新的ssh公钥。
authorized_keys文件位于您正在登录的用户的主目录下的.ssh子目录下。取决于你正在运行的AMI,它可能在以下情况之一:
/home/ec2-user/.ssh/authorized_keys
/home/ubuntu/.ssh/authorized_keys
/root/.ssh/authorized_keys
编辑authorized_keys文件后,在断开用于编辑该文件的会话之前,总是使用不同的终端来确认您能够通过ssh登录到该实例。您不希望犯错误并将自己完全锁定在实例之外。
当您在考虑EC2上的ssh密钥对时,我建议您将自己的个人ssh公钥上传到EC2,而不是让Amazon为您生成密钥对。
这是我写的一篇文章:
上传个人ssh密钥到Amazon EC2 http://alestic.com/2010/10/ec2-ssh-keys
这只适用于您运行的新实例。
下载AWS pem后执行此命令。
ssh-keygen -f YOURKEY.pem -y
然后将输出转储到authorized_keys中。
或将pem文件复制到AWS实例并执行以下命令
chmod 600 YOURKEY.pem
然后
ssh-keygen -f YOURKEY.pem -y >> ~/.ssh/authorized_keys
如果遵循以下步骤,将节省大量时间,也不需要停止正在运行的实例。
开始新的t1。microec2实例,使用新的密钥对。确保在相同的子网中创建它,否则将不得不终止实例并重新创建它。 SSH到新的微实例,复制~/的内容。Ssh /authorized_keys在计算机的某处。 用旧的ssh密钥登录主实例。 从点2复制并替换文件内容到~/.ssh/authorized_keys 现在您只需使用新密钥即可再次登录。旧钥匙不能用了。
就是这样。享受:)
推荐文章
- 亚马逊ECS和亚马逊EC2有什么区别?
- 运行ssh后立即执行命令
- 我如何知道我在S3桶中存储了多少对象?
- S3 Bucket操作不应用于任何资源
- 将AWS凭证传递给Docker容器的最佳方法是什么?
- 当权限为S3时,AccessDenied for ListObjects for S3 bucket:*
- 电子邮件地址未验证(AWS SES)
- ssh -L转发多个端口
- 使用Boto3将S3对象作为字符串打开
- 从PKCS12文件中提取公钥/私钥,供以后在SSH-PK-Authentication中使用
- 在python shell中按方向键时看到转义字符
- 如何忽略ansible SSH的真实性检查?
- 如何移除SSH密钥?
- AWS VPC - Internet网关vs. NAT
- 如何在AWS Lambda中加载npm模块?