aws 服务器通过串口控制台连接的问题
背景:
研发人员不知道操作了什么,导致服务器的ssh服务无法启动,重启服务器也不行,这个时候,想登录服务器,可就不那么容易了,只能是通过串口模式去登录
前三种连接方式,都依赖ssh服务。串行控制台的方式,可以不依托于ssh服务,但是必须得有用户名和密码才行,否则再没有别的方法。
所以,在创建服务器的时候,要给用户设置密码。
centos服务器的用户是centos
ubuntu服务器的用户是ubuntu
但是有个问题需要注意,问题如下:
系统版本:centos7
1. 自定义镜像,为centos用户设置了密码,命令为:passwd centos
2. 在串口控制台使用centos用户名和密码登录该机器,可以正常登录
3. 为该机器创建镜像
4. 基于创建的镜像启动新的ec2,新的ec2无法在串口控制台使用centos用户名和密码登录
5. 经过对比shadow文件,发现新启动的机器,密码字段前面多个两个!!
6. 总结:在定制镜像时,设置了centos的密码,但是基于该镜像创建的机器,密码被锁定,无法使用镜像设置的centos用户名密码登录。
解决办法:
此问题和 CentOS 在云上引导启动的软件 cloud-init 有关。 cloud-init 此软件通常内置在各大操作系统云映像中,并且在实例启动时自动配置 SSH 密钥、主机名、网路配置等虚拟配置。 在 cloud-init 的配置中,为了安全性顾虑,仅允许使用 SSH 密钥登入,因此在实例从 AMI 映像中启动时,会将默认帐户 centos 锁定。 此配置的说明在官方文档中,可以参考此处: https://cloudinit.readthedocs.io/en/latest/reference/examples.html 。
针对此问题,有两个解决方案:
1. 采用自定义帐户,不使用默认的 centos 帐户, 只要创建自定义帐户,并且创建帐户密码,再针对此实例制作 AMI 映像。 如此一来,创建出的帐户便不受到 cloud-init 管理,可以日后通过串口登录。
2. 修改 cloud-init 配置 ,需要修改的文档为: /etc/cloud/cloud.cfg 使用文字编辑器 (例如 vim) 开启,并更改下面配置: lock_passwd: true 修改为 lock_passwd: false 并保存。 保存之后,再对实例制作 AMI 映像。