如何在AWS管理控制台中更改ec2实例的密钥对?我可以停止实例,我可以创建新的密钥对,但是我没有看到任何修改实例密钥对的链接 .
我尝试了以下步骤,它没有停止实例 . 我的要求是 - 因为我已经更改了我的客户端机器,旧的.pem文件不允许我登录到ec2实例 .
您将在该文件中看到旧密钥 .
ssh-keygen -f YOUR_PEM_FILE.pem -y它将生成一个键 . 将密钥附加到步骤#1中打开的〜/ .ssh / authorized_keys . 无需删除旧密钥 .
在AWS控制台中,创建一个新密钥对 . 将其存储在新机器中 . 将其重命名为旧的pem文件 - 原因是旧的pem文件仍与AWS中的ec2实例相关联 .
全部完成 .
我可以从我的新客户端计算机登录AWS ec2 .
一旦实例启动,就无法在元数据级别更改与实例关联的密钥对,但您可以更改用于连接到实例的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文件后,在断开与用于编辑文件的会话之前,请始终使用其他终端确认您能够进入实例 . 你不想犯错,完全把自己锁在实例之外 .
当您考虑在EC2上使用ssh密钥对时,我建议您将自己的个人ssh公钥上传到EC2,而不是让亚马逊为您生成密钥对 .
这是我写的一篇文章:
将个人ssh密钥上传到Amazon EC2 http://alestic.com/2010/10/ec2-ssh-keys
这仅适用于您运行的新实例 .
如果您使用的是ElasticBeanstalk平台,可以通过以下方式更改密钥:
Elastic Beanstalk面板
配置
实例(cog top-right)
EC2密钥对
这将终止当前实例并创建具有所选键/设置的新实例 .
Yegor256的答案对我有用,但我想我会添加一些评论来帮助那些不太擅长安装驱动器的人(比如我!):
亚马逊为您提供了在附加卷时为卷命名的选项 . 您使用了/ dev / sda - / dev / sdp范围内的名称 . 然后,较新版本的Ubuntu会将您放入/ dev / xvd(x)的内容重命名为该效果 .
所以对我来说,我选择/ dev / sdp作为AWS中的挂载名称,然后我登录到服务器,发现Ubuntu已将我的卷重命名为/ dev / xvdp1) . 然后我必须安装驱动器 - 对我来说,我必须这样做:
mount -t ext4 xvdp1 /mnt/tmp
跳过所有这些箍后,我可以在/ mnt / tmp访问我的文件
下载AWS pem后运行此命令 .
ssh-keygen -f YOURKEY.pem -y
然后将输出转储到 authorized_keys .
authorized_keys
或者将pem文件复制到AWS实例并执行以下命令
chmod 600 YOURKEY.pem
然后
ssh-keygen -f YOURKEY.pem -y >> ~/.ssh/authorized_keys
我注意到,当由Elastic Beanstalk管理时,您可以更改活动的EC2密钥对 . 在Elastic Beanstalk> Configuration> Security下,从 EC2 key pair 下拉列表中选择新密钥 . 你'll see this message asking if you'确定:
EC2KeyName:对选项EC2KeyName设置的更改不会立即生效 . 您的每个现有EC2实例都将被替换,您的新设置将生效 .
当我这样做时,我的实例已经终止了 . 然后它开始,终止,然后重新开始 . 显然"replacing"表示终止并创建一个新实例 . 如果您已修改启动卷,请先创建AMI,然后在 Custom AMI ID 的同一Elastic Beanstalk> Configuration> Instances表单中指定该AMI . 这也警告要更换EC2实例 .
修改了EC2密钥对和自定义AMI ID后,在看到有关两者的警告后,单击 Save 继续 .
请记住,重新创建实例时IP地址会发生变化,因此您需要从EC2控制台检索新IP地址,以便在通过SSH连接时使用 .
最简单的解决方案是复制内容
~/.ssh/id_rsa.pub
进入您的AWS实例的authorized_keys
~/.ssh/authorized_keys
这将允许您ssh到EC2实例,而无需为ssh命令指定pem文件 . 测试连接后,您可以删除所有其他密钥 .
如果您需要创建一个新密钥才能与其他人共享,您可以通过以下方式实现:
ssh-keygen -t rsa
这将创建私有key.pem文件,您可以通过以下方式获取该公钥:
ssh-keygen -f private_key.pem -y > public_key.pub
任何拥有private_key.pem的人都可以与之联系
ssh user@host.com -i private_key.pem
仅当您有权访问要更改/添加密钥的实例时,此选项才有效 . 您可以创建新密钥对 . 或者,如果您已经拥有密钥对,则可以将新对的公钥粘贴到实例上的authorized_keys文件中 .
vim .ssh / authorized_keys
现在,您可以使用该对的私钥并登录 .
希望这可以帮助 .
我相信最简单的方法是:
创建原始iinstance的AMI图像 .
使用新密钥对使用AMI映像(来自步骤1)启动新的EC2实例 .
使用新密钥登录新的EC2实例 .
我经历了这种方法,过了一段时间,才能使它发挥作用 . 缺乏实际命令使其变得艰难,但我明白了 . 然而 - 在以后不久发现并测试了更简单的方法:
将您的实例保存为AMI(重启或不重启,我建议重启) . 这只有在EBS支持的情况下才有效 .
然后,只需从此AMI启动一个实例并分配新的密钥文件 .
将您的弹性IP(如果适用)移动到新实例,您就完成了 .
AWS EC2支持的说明:
更改pem登录
转到您的EC2控制台
在网络和安全下,单击密钥对单击创建密钥对
为新密钥对命名,保存.pem文件 . 密钥对的名称将用于连接到您的实例
创建与实例的SSH连接并保持打开状态在PuttyGen中
,单击"Load"以加载.pem文件
选中SSH-2 RSA单选按钮 . 点击"Save private key"你会弹出窗口警告,点击“是”
也点击"Save public key",以生成公钥 . 这是我们要复制到您当前实例的公钥
使用新密钥对名称和扩展名.pub保存公钥
在记事本中打开公钥内容
复制以下内容"Comment: " imported-openssh-key " and before " ---- END SSH2 PUBLIC KEY ----注意 - 您需要将内容复制为一行 - 删除所有新行在连接的实例上
,使用工具vi打开authorized_keys文件 . 运行以下命令:vi .ssh / authorized_keys您还应该在文件中看到原始公钥
将光标移动到文件的第一个公钥内容的末尾:输入"i"进行插入在新行上
,键入"ssh-rsa"并在粘贴公钥,空格和.pem文件名称(不包含.pem)之前添加空格注意 - 您应该获得一个格式与上一行
按Esc键,然后键入:wq!
这将保存更新的authorized_keys文件
现在尝试使用新的密钥pai为您的实例打开一个新的SSH会话
当您确认可以使用新密钥对SSH进入实例时,您可以使用vi .ssh / authorized_key并删除旧密钥 .
回答Shaggie评论:
如果您无法连接到实例(例如密钥已损坏),而不是使用AWS控制台分离卷(http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-detaching-volume.html)并将其重新连接到工作实例,那么请更改卷上的密钥并将其重新连接回上一个实例 .
就这样做:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#replacing-lost-key-pair
这是我做的,感谢Eric Hammond的博客文章:
停止正在运行的EC2实例
分离其 /dev/xvda1 卷(让我们称之为卷A) - see here
/dev/xvda1
使用我的新密钥对启动新的t1.micro EC2实例 . Make sure you create it in the same subnet ,否则您将不得不终止实例并再次创建它 . - see here
将卷A附加到新的微实例,如 /dev/xvdf (或 /dev/sdf )
/dev/xvdf
/dev/sdf
SSH到新的微实例并将卷A挂载到 /mnt/tmp
/mnt/tmp
$ sudo mount / dev / xvdf1 / mnt / tmp
复制 ~/.ssh/authorized_keys 至 /mnt/tmp/home/ubuntu/.ssh/authorized_keys
/mnt/tmp/home/ubuntu/.ssh/authorized_keys
退出
终止微实例
从中分离卷A.
将卷A附加回主实例 /dev/xvda
/dev/xvda
启动主实例
像以前一样使用新的 .pem 文件登录
.pem
而已 .
修改“ yegor256 ”的答案 . 如果遵循以下步骤,它将 save lot of time and there will be no need to stop the running instance.
使用新密钥对启动新的t1.micro EC2实例 . Make sure you create it in the same subnet ,否则您将不得不终止实例并再次创建它 .
SSH到新的微实例并在计算机上的某处复制 ~/.ssh/authorized_keys 的内容 .
使用 old ssh key 登录主实例 .
从 point 2 to ~/.ssh/authorized_keys 复制并替换文件内容
现在您只能使用新密钥重新登录 . 旧密钥将不再起作用 .
这就对了 . 享受 :)
13 回答
我尝试了以下步骤,它没有停止实例 . 我的要求是 - 因为我已经更改了我的客户端机器,旧的.pem文件不允许我登录到ec2实例 .
您将在该文件中看到旧密钥 .
ssh-keygen -f YOUR_PEM_FILE.pem -y它将生成一个键 . 将密钥附加到步骤#1中打开的〜/ .ssh / authorized_keys . 无需删除旧密钥 .
在AWS控制台中,创建一个新密钥对 . 将其存储在新机器中 . 将其重命名为旧的pem文件 - 原因是旧的pem文件仍与AWS中的ec2实例相关联 .
全部完成 .
我可以从我的新客户端计算机登录AWS ec2 .
一旦实例启动,就无法在元数据级别更改与实例关联的密钥对,但您可以更改用于连接到实例的ssh密钥 .
大多数AMI都有一个启动过程,它会下载公共ssh密钥并将其安装在.ssh / authorized_keys文件中,以便您可以使用相应的私有ssh密钥作为该用户进行ssh .
如果要更改用于访问实例的ssh密钥,则需要编辑实例本身上的authorized_keys文件并转换为新的ssh公钥 .
authorized_keys文件位于您登录用户的主目录下的.ssh子目录下 . 根据您运行的AMI,它可能位于以下位置之一:
编辑authorized_keys文件后,在断开与用于编辑文件的会话之前,请始终使用其他终端确认您能够进入实例 . 你不想犯错,完全把自己锁在实例之外 .
当您考虑在EC2上使用ssh密钥对时,我建议您将自己的个人ssh公钥上传到EC2,而不是让亚马逊为您生成密钥对 .
这是我写的一篇文章:
这仅适用于您运行的新实例 .
如果您使用的是ElasticBeanstalk平台,可以通过以下方式更改密钥:
Elastic Beanstalk面板
配置
实例(cog top-right)
EC2密钥对
这将终止当前实例并创建具有所选键/设置的新实例 .
Yegor256的答案对我有用,但我想我会添加一些评论来帮助那些不太擅长安装驱动器的人(比如我!):
亚马逊为您提供了在附加卷时为卷命名的选项 . 您使用了/ dev / sda - / dev / sdp范围内的名称 . 然后,较新版本的Ubuntu会将您放入/ dev / xvd(x)的内容重命名为该效果 .
所以对我来说,我选择/ dev / sdp作为AWS中的挂载名称,然后我登录到服务器,发现Ubuntu已将我的卷重命名为/ dev / xvdp1) . 然后我必须安装驱动器 - 对我来说,我必须这样做:
跳过所有这些箍后,我可以在/ mnt / tmp访问我的文件
下载AWS pem后运行此命令 .
然后将输出转储到
authorized_keys
.或者将pem文件复制到AWS实例并执行以下命令
然后
我注意到,当由Elastic Beanstalk管理时,您可以更改活动的EC2密钥对 . 在Elastic Beanstalk> Configuration> Security下,从 EC2 key pair 下拉列表中选择新密钥 . 你'll see this message asking if you'确定:
当我这样做时,我的实例已经终止了 . 然后它开始,终止,然后重新开始 . 显然"replacing"表示终止并创建一个新实例 . 如果您已修改启动卷,请先创建AMI,然后在 Custom AMI ID 的同一Elastic Beanstalk> Configuration> Instances表单中指定该AMI . 这也警告要更换EC2实例 .
修改了EC2密钥对和自定义AMI ID后,在看到有关两者的警告后,单击 Save 继续 .
请记住,重新创建实例时IP地址会发生变化,因此您需要从EC2控制台检索新IP地址,以便在通过SSH连接时使用 .
最简单的解决方案是复制内容
进入您的AWS实例的authorized_keys
这将允许您ssh到EC2实例,而无需为ssh命令指定pem文件 . 测试连接后,您可以删除所有其他密钥 .
如果您需要创建一个新密钥才能与其他人共享,您可以通过以下方式实现:
这将创建私有key.pem文件,您可以通过以下方式获取该公钥:
任何拥有private_key.pem的人都可以与之联系
仅当您有权访问要更改/添加密钥的实例时,此选项才有效 . 您可以创建新密钥对 . 或者,如果您已经拥有密钥对,则可以将新对的公钥粘贴到实例上的authorized_keys文件中 .
vim .ssh / authorized_keys
现在,您可以使用该对的私钥并登录 .
希望这可以帮助 .
我相信最简单的方法是:
创建原始iinstance的AMI图像 .
使用新密钥对使用AMI映像(来自步骤1)启动新的EC2实例 .
使用新密钥登录新的EC2实例 .
我经历了这种方法,过了一段时间,才能使它发挥作用 . 缺乏实际命令使其变得艰难,但我明白了 . 然而 - 在以后不久发现并测试了更简单的方法:
将您的实例保存为AMI(重启或不重启,我建议重启) . 这只有在EBS支持的情况下才有效 .
然后,只需从此AMI启动一个实例并分配新的密钥文件 .
将您的弹性IP(如果适用)移动到新实例,您就完成了 .
AWS EC2支持的说明:
更改pem登录
转到您的EC2控制台
在网络和安全下,单击密钥对单击创建密钥对
为新密钥对命名,保存.pem文件 . 密钥对的名称将用于连接到您的实例
创建与实例的SSH连接并保持打开状态
在PuttyGen中
,单击"Load"以加载.pem文件
选中SSH-2 RSA单选按钮 . 点击"Save private key"你会弹出窗口警告,点击“是”
也点击"Save public key",以生成公钥 . 这是我们要复制到您当前实例的公钥
使用新密钥对名称和扩展名.pub保存公钥
在记事本中打开公钥内容
复制以下内容"Comment: " imported-openssh-key " and before " ---- END SSH2 PUBLIC KEY ----
注意 - 您需要将内容复制为一行 - 删除所有新行
在连接的实例上
,使用工具vi打开authorized_keys文件 . 运行以下命令:vi .ssh / authorized_keys您还应该在文件中看到原始公钥
将光标移动到文件的第一个公钥内容的末尾:输入"i"进行插入
在新行上
,键入"ssh-rsa"并在粘贴公钥,空格和.pem文件名称(不包含.pem)之前添加空格注意 - 您应该获得一个格式与上一行
按Esc键,然后键入:wq!
这将保存更新的authorized_keys文件
现在尝试使用新的密钥pai为您的实例打开一个新的SSH会话
当您确认可以使用新密钥对SSH进入实例时,您可以使用vi .ssh / authorized_key并删除旧密钥 .
回答Shaggie评论:
如果您无法连接到实例(例如密钥已损坏),而不是使用AWS控制台分离卷(http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-detaching-volume.html)并将其重新连接到工作实例,那么请更改卷上的密钥并将其重新连接回上一个实例 .
就这样做:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#replacing-lost-key-pair
这是我做的,感谢Eric Hammond的博客文章:
停止正在运行的EC2实例
分离其
/dev/xvda1
卷(让我们称之为卷A) - see here使用我的新密钥对启动新的t1.micro EC2实例 . Make sure you create it in the same subnet ,否则您将不得不终止实例并再次创建它 . - see here
将卷A附加到新的微实例,如
/dev/xvdf
(或/dev/sdf
)SSH到新的微实例并将卷A挂载到
/mnt/tmp
$ sudo mount / dev / xvdf1 / mnt / tmp
复制
~/.ssh/authorized_keys
至/mnt/tmp/home/ubuntu/.ssh/authorized_keys
退出
终止微实例
从中分离卷A.
将卷A附加回主实例
/dev/xvda
启动主实例
像以前一样使用新的
.pem
文件登录而已 .
修改“ yegor256 ”的答案 . 如果遵循以下步骤,它将 save lot of time and there will be no need to stop the running instance.
使用新密钥对启动新的t1.micro EC2实例 . Make sure you create it in the same subnet ,否则您将不得不终止实例并再次创建它 .
SSH到新的微实例并在计算机上的某处复制 ~/.ssh/authorized_keys 的内容 .
使用 old ssh key 登录主实例 .
从 point 2 to ~/.ssh/authorized_keys 复制并替换文件内容
现在您只能使用新密钥重新登录 . 旧密钥将不再起作用 .
这就对了 . 享受 :)