如何在自定义EC2 AMI中为ubuntu用户设置可持久化的默认密码?
解决EC2自定义AMI中Ubuntu用户密码持久化问题
方法1:用cloud-init配置默认密码
EC2实例启动时会运行cloud-init,默认会重置用户的认证信息,所以得通过cloud-init的配置来固定默认密码:
- 编辑cloud-init的主配置文件:
sudo nano /etc/cloud/cloud.cfg- 先生成加密后的密码字符串,执行下面的命令,输入你想设置的密码后会输出加密结果:
mkpasswd --method=SHA-512- 在配置文件里找到
users数组,修改ubuntu用户的配置,把刚才生成的加密密码填进去,同时设置lock_passwd: false,示例如下:
users: - name: ubuntu passwd: 替换成加密后的密码字符串 lock_passwd: false sudo: ["ALL=(ALL) NOPASSWD:ALL"] groups: sudo shell: /bin/bash- 在配置文件里找到
- 保存文件后,清理cloud-init的缓存:
sudo cloud-init clean
方法2:直接改shadow文件+禁用cloud-init用户管理
要是不想用cloud-init配置,也可以直接修改密码文件,同时让cloud-init别插手用户设置:
- 先给ubuntu用户设好密码:
sudo passwd ubuntu- 编辑cloud.cfg文件,把里面的
users段落注释掉(每行开头加#),这样cloud-init启动时就不会重置用户信息了:
sudo nano /etc/cloud/cloud.cfg- 编辑cloud.cfg文件,把里面的
- 删除cloud-init的实例缓存数据,避免残留配置影响新实例:
sudo rm -rf /var/lib/cloud/instances/*
注意点
- 一定要用加密后的密码,别直接写明文,不然安全风险很高。
- 改完配置后先重启当前实例测试一下,确认密码能正常登录,再创建自定义AMI。
- 为了安全,最好提醒用户首次登录后立刻修改默认密码。
内容的提问来源于stack exchange,提问作者waka
相关产品推荐
相关产品推荐

