背景描述:
因为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/