实战--丢失了AWS SSH pem 密钥对,该如何ssh连接到 Amazon EC2 实例

有个之前的同事不小心丢失了AWS SSH pem 密钥对,该如何才能登录这些服务器呢?AWS不象阿里云和Ucloud可以直接在网页控制台更改root用户密码,然后在网页控制台登录。AWS 默认是用ssh public key来做登录认证的,而且我试了一下,EC2的网页控制台也无法正常显示。这样的话,如何才能登入这些机器呢?AWS 还是提供了方法,让我们来登录这些linux EC2系统的。下面是具体的方法

确认linux 用户的EC2 登录用户名

EC2上每种linux系统的默认登录用户名都不相同,下面是AWS 相关说明文档。

For Amazon Linux 2 or the Amazon Linux AMI, the user name is ec2-user.
For a CentOS AMI, the user name is centos.
For a Debian AMI, the user name is admin.
For a Fedora AMI, the user name is ec2-user or fedora.
For a RHEL AMI, the user name is ec2-user or root.
For a SUSE AMI, the user name is ec2-user or root.
For an Ubuntu AMI, the user name is ubuntu.
Otherwise, if ec2-user and root don’t work, check with the AMI provider.

生成自己的ssh public

如果有自己的ssh public key,就不用再生成了,没有的话,可以用ssh client端自己生成一下,这里就不细说了。

更改用户数据

1、 打开 Amazon EC2 控制台
2、 停止你丢失pem文件的EC2 实例
3、 依次选择操作、实例设置和查看/更改用户数据(Edit user data),将下面的数据CP到更改用户数据对话框中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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, always]
users:
- name: username
ssh-authorized-keys:
- PublicKeypair

注: username – 用上面确认的不同系统不同的默认登录用户名替换
PublickKeypair – 用你的公钥替换
always – 默认是once, 我这边改成的always, 如果是用once的话,只会更改一次,如果上面的内容输入有错误 ,那么你再改内容,就不会生效。改成always后,每次重启,都会再次做更改。如果是设置成always,请记得在更改完成后,再清空相关用户数据,重启一下EC2.不然,每次重启,都会去authorized-keys文件中加一次这个key文件。

最后,就可以登录EC2 服务器

最后,启动这个EC2 实例,就可以用上面的用户名ssh登录这个服务器了。注意,如果你没有用弹性IP的话,重启后,你的EC2 外网IP会有变更,请使用新的外网ip登录。

相关参考

AWS 官方的操作文档 ,写得非常详细了,只是默认配置用了once。我是第一次把ssh public key 填错了,后来更改后,即使重启也改不过来,才发现了有个always选项。做为实战的一点点补充吧。

坚持原创技术分享,您的支持将鼓励我继续创作!