更改ec2实例的密钥对
如何在AWSpipe理控制台中更改我的ec2实例的密钥对? 我可以停止实例,我可以创build新的密钥对,但是我没有看到任何链接来修改实例的密钥对。
这是我做的,感谢Eric Hammond的博客文章:
- 停止正在运行的EC2实例
- 分离它的
/dev/sda1
卷(我们称之为卷A) - 启动新的t1.micro EC2实例,使用我的新密钥对。 确保你在同一个子网中创build它 ,否则你将不得不终止实例并重新创build它。
- 将卷A连接到新的微型实例,如
/dev/xvdf
(或/dev/sdf
) - SSH到新的微型实例,并将卷A挂接到
/mnt/tmp
- 将
~/.ssh/authorized_keys
复制到/mnt/tmp/home/ubuntu/.ssh/authorized_keys
- 登出
- 终止微型实例
- 从它分离出卷A.
- 将卷A作为
/dev/sda1
附加到主实例 - 启动主实例
- 像以前一样login,使用新的
.pem
文件
而已。
一旦实例启动,就无法在元数据级别更改与实例关联的密钥对,但可以更改用于连接到实例的ssh密钥。
大多数AMI上都有一个启动进程,用于下载公共ssh密钥并将其安装在.ssh / authorized_keys文件中,以便您可以使用相应的私有ssh密钥作为该用户ssh进入。
如果你想改变你用来访问一个实例的ssh密钥,你需要编辑这个实例本身的authorized_keys文件并转换成新的ssh公钥。
authorized_keys文件位于您正在login的用户的主目录下的.ssh子目录下。 根据您正在运行的AMI,它可能在以下之一中:
/home/ec2-user/.ssh/authorized_keys /home/ubuntu/.ssh/authorized_keys /root/.ssh/authorized_keys
编辑authorized_keys文件后,始终使用不同的terminal来确认您能够在与用于编辑文件的会话断开连接之前,ssh进入实例。 你不想犯一个错误,把自己完全locking在实例之外。
在考虑EC2上的ssh密钥对时,我build议上传自己的个人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
AWS EC2支持指令:
- 更改pemlogin
- 转到您的EC2控制台
- 在NETWORK&SECURITY下,点击密钥对点击创build密钥对
- 给你的新密钥对一个名字,保存.pem文件。 密钥对的名称将用于连接到您的实例
- 创build与您的实例的SSH连接并保持打开状态
- 在PuttyGen中,点击“Load”加载你的.pem文件
- 保持SSH-2 RSA单选button被选中。 点击“保存私钥”popup窗口警告,点击“是”
- 点击“保存公钥”,这样就可以生成公钥。 这是我们要复制到当前实例的公钥
- 使用新的密钥对名称和扩展名.pub保存公钥
- 在记事本中打开公钥内容
- 复制下面的内容“注释:”imported-openssh-key“和之前的”—-结束SSH2 PUBLIC KEY —-
注意 – 您需要将内容复制为一行 – 删除所有新行 - 在连接的实例上,使用vi工具打开authorized_keys文件。 运行以下命令:vi .ssh / authorized_keys您也应该在文件中看到原始的公钥
- 将光标移动到第一个公钥内容的末尾:input“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 )并将其重新附加到工作实例,而不是更改卷上的密钥并将其重新附加到以前的实例。
我经历了这种方法,过了一段时间,才使其工作。 缺乏实际的命令使得它变得困难,但是我明白了。 然而 – 更简单的方法被发现和testing后不久:
- 将你的实例保存为AMI(重启或不重启,我build议重启)。 这只有在EBS支持的情况下才有效。
- 然后,只需从这个AMI启动一个实例并分配新的密钥文件。
- 将弹性IP(如果适用)移至新实例,即可完成。
我注意到,当由Elastic Beanstalkpipe理时,您可以更改您的活动EC2密钥对。 在Elastic Beanstalk>configuration>实例下,从EC2密钥对下拉列表中select新密钥。 你会看到这个消息,问你是否确定:
EC2KeyName:对选项EC2KeyName设置的更改不会立即生效。 您现有的每个EC2实例都将被replace,您的新设置将会生效。
当我这样做时,我的实例已经被终止了。 然后开始,终止,然后重新开始。 显然“replace”意味着终止并创build一个新的实例。 如果您已经修改了引导卷,请先创buildAMI,然后在相同的Elastic Beanstalk> Configuration> Instances窗体中指定AMI作为自定义AMI ID 。 这也警告replaceEC2实例。
修改EC2密钥对和自定义AMI ID后,在看到有关两者的警告后,单击保存以继续。
请记住,在重新创build实例时,IP地址会发生变化,所以您需要从EC2控制台检索新的IP地址,以便在通过SSH连接时使用。
修改“ yegor256 ”的答案。 就像下面的步骤一样,它将节省大量的时间,并且不需要停止正在运行的实例。
- 使用新的密钥对启动新的t1.micro EC2实例。 确保你在同一个子网中创build它 ,否则你将不得不终止实例并重新创build它。
- SSH到新的微型实例,并将〜/ .ssh / authorized_keys的内容复制到您计算机上的某处。
- 用旧的ssh密钥login到主实例。
- 将文件内容从点2复制并replace为〜/ .ssh / authorized_keys
- 现在只能用新的密钥重新login。 旧密钥将不再工作。
这就对了。 享受🙂
如果您正在使用ElasticBeanstalk平台,则可以通过执行以下操作更改密钥:
- Elastic Beanstalk面板
- 组态
- 实例(cog右上angular)
- EC2密钥对
这将终止当前实例,并用选定的键/设置创build新的实例。
我相信最简单的方法是:
- 创build原始实例的AMI图像。
- 使用新的密钥对,使用AMI映像(来自步骤1)启动新的EC2实例。
- 用新密钥login到新的EC2实例。
这只有在您有权访问要更改/添encryption钥的实例时才有效。您可以创build一个新的密钥对。 或者,如果您已经有密钥对,则可以将新对的公钥粘贴到实例的authorized_keys文件中。
vim .ssh / authorized_keys
现在您可以使用该对的私钥并login。
希望这可以帮助。
Yegor256的答案对我很有帮助,但我想我只是想补充一些意见来帮助那些不太擅长安装驱动器的人(比如我!):
亚马逊给你一个你想要命名的卷的附加select。 你已经在/ dev / sda – / dev / sdp中使用了一个名称。然后,较新版本的Ubuntu将会把你放在/ dev / xvd(x)中的东西重命名为这个。
所以对于我来说,我select/ dev / sdp作为AWS中的装载名称,然后login到服务器,并发现Ubuntu已将卷更名为/ dev / xvdp1)。 然后我必须装上驱动器 – 对我来说,我必须这样做:
mount -t ext4 xvdp1 /mnt/tmp
跳过所有这些箍之后,我可以在/ mnt / tmp中访问我的文件
我已经尝试下面的步骤,它没有停止实例工作。 我的要求是 – 因为我改变了我的客户机,旧的.pem文件不允许我login到EC2实例。
- 使用旧的.pem文件从旧机器login到ec2实例。 打开〜/ .ssh / authorized_keys
您将在该文件中看到您的旧密钥。
-
ssh-keygen -f YOUR_PEM_FILE.pem -y它会生成一个密钥。 追encryption钥到步骤1中打开的〜/ .ssh / authorized_keys。 不需要删除旧密钥。
-
从AWS控制台创build一个新的密钥对。 将其存储在新机器中。 将其重命名为旧的pem文件 – 原因是旧的pem文件仍然与AWS中的ec2实例关联。
全做完了。
我可以从我的新客户端计算机login到AWS ec2。
最简单的解决方法是复制内容
~/.ssh/id_rsa.pub
到您的AWS实例的authorized_keys中
~/.ssh/authorized_keys
这将允许你ssh进入EC2实例,而不用为ssh命令指定一个pem文件。 一旦您testing连接,您可以删除所有其他键。
如果你需要创build一个新的密钥与他人分享,你可以这样做:
ssh-keygen -t rsa
这将创build私钥key.pem文件,您可以通过以下方式获取该公钥:
ssh-keygen -f private_key.pem -y > public_key.pub
任何有public_key.pub的人都可以连接
ssh user@host.com -i public_key.pub