使用EC2 Userdata为丢失密钥的EC2更换密钥

背景描述:

因为AWS密钥只允许创建好后第一时刻下载一次,之后下载完之后不再支持下载。因此保护密钥成是重中之重,更改换密钥也有多种方式

Linux 系统 EC2 密钥丢失应对指南_Linux 系统 EC2 密钥恢复方法-AWS云服务其中官方介绍的五种方式:

恢复方法 1:使用 EC2 用户数据(Userdata)

恢复方法 2:使用 Amazon Systems Manager

恢复方法 3:使用 EC2 Instance Connect

恢复方法 4:使用 EC2 Serial Console

恢复方法 5:使用 EBS Volume Swap

其核心公钥会存放在~/.ssh/authorize_keys 文件中,所以核心就是更改authorize_keys中的信息。2-4恢复方法局限性在于需要提前配置,才可以使用.方法五就相对繁琐,需要创建一个新的EC2,将原来的EBS卷挂载新的EC2下进行更改。方法一就相对简单编写一个用户数据(Userdata)

实验环境准备 :

准备一个新的密钥和一台EC2

操作步骤:

第一步:创建一个密钥将新的密钥文件下来到linux或者MacOS执行以下命令:

sudo chmod 400 newkey.pem

sudo ssh-keygen -y -f newkey.pem

 

保存返回公钥信息内容一会用得到,内容可能如下: 

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJKjS3lRf86H6wIABOX5q4cHxsWz3blgWIW+rqJ0AoCDcK9rJJGtbCpsOihk+uT9camedqHGDVbCBRdYZDA/IRGTvWCuKTbAfj+2njD1krpyynuvLpnSDhgWVtHO1BqS0ETFzMrrA0qUO8yxLU6MMXRprvKoEE+FaTOpDWeNJuFb5qwJOqaTKhY4LYB8H+zk3CZ1HrMQacP/9Yfzx5fCAGk+f9HtliF3Xk/fj6wn4FLNLG+/YqSGybyJGeFR+7E+HDnDR4V5wTOLXF2N7/QAcwnOjuynjtRjFnS2QMIHvr3XUk7nmPhntZg+PEqMM4vH967H6uwfUpRw2DWVC6ski/

 第二步:准备如下Userdata脚本,替换username为要登录的用户名,例如Amazon Linux 2023的默认用户名ec2-user,然后替换Publickey的部分为上一步复制下来的公钥的内容。

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:
- [users-groups, once]
users:
  - name: username
    ssh-authorized-keys:
    - PublicKeypair

替换内容如下:

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:
- [users-groups, once]
users:
  - name: ec2-user
    ssh-authorized-keys:
    - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJKjS3lRf86H6wIABOX5q4cHxsWz3blgWIW+rqJ0AoCDcK9rJJGtbCpsOihk+uT9camedqHGDVbCBRdYZDA/IRGTvWCuKTbAfj+2njD1krpyynuvLpnSDhgWVtHO1BqS0ETFzMrrA0qUO8yxLU6MMXRprvKoEE+FaTOpDWeNJuFb5qwJOqaTKhY4LYB8H+zk3CZ1HrMQacP/9Yfzx5fCAGk+f9HtliF3Xk/fj6wn4FLNLG+/YqSGybyJGeFR+7E+HDnDR4V5wTOLXF2N7/QAcwnOjuynjtRjFnS2QMIHvr3XUk7nmPhntZg+PEqMM4vH967H6uwfUpRw2DWVC6ski/

第三步:编辑用户数据

首先要将EC2停止,然后选中EC2点击操作→实例设置→编辑用户数据

将编写好的用户数据输入到文本框中保存,然后启动实例

第四步:验证

等实例状态转好后用新的密钥进行连并查看~/.ssh/authorized_keys的文件内容会发现底下会多一条新密钥的记录。因为在用户数据脚本中是追加不是替换,重要事项最后停止实例要将用户数据脚本中的内容删除,因为已经明文显示了密钥,为了安全应当删除

参考链接:https://aws.amazon.com/cn/premiumsupport/knowledge-center/user-data-replace-key-pair-ec2/

  • 17
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值