第 7 章 使用 cloud-init 配置身份验证
您可以使用 cloud-init 工具管理用户、访问权限和密码。特别是,您可以设置 cloud-init 来在虚拟机中执行以下任一操作:
-
在
users部分中创建并描述用户。如果添加了users部分,您还必须在该部分中设置默认的用户选项。您可以修改这个部分,来向初始系统配置添加更多用户,并设置其他用户选项。 -
通过在
users部分中添加sudo和groups条目,将用户配置为 sudoer。 -
配置用户数据,以便只有您有
root用户访问权限。 -
强制
cloud-user在第一次登录时更改cloud-user密码,来重置密码。 -
通过创建一个用户列表来设置
root密码。
先决条件
根据数据源的要求,编辑
user-data文件或在cloud.cfg.d目录中添加以下指令:注意所有用户指令都包括文件顶部的
#cloud-config,以便cloud-init将文件识别为包含用户指令。当您在cloud.cfg.d目录中包含指令时,将该文件命名为*.cfg,且始终在文件的顶部包含#cloud-config。
流程
添加用户和用户选项 :
添加或修改
users部分以添加用户。例如:#cloud-config users: - default - name: user2 gecos: User N. Ame selinux-user: staff_u groups: users,wheel ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AA..vz user@domain.com chpasswd: list: | root:password cloud-user:mypassword user2:mypassword2 expire: False-
如果您希望
cloud-user与您指定的其他用户一起创建的默认用户,请确保将default添加为这个部分中的第一个条目。如果这不是第一个条目,则不会创建cloud-user。 默认情况下,如果没有
selinux-user值,用户会被标记为unconfined_u。注意这个示例将用户
user2放在两个组中:users和wheel。
将 sudo 用户添加到用户列表 :
-
添加
sudo条目并指定用户访问权限。例如,sudo: ALL=(ALL)NOPASSWD:ALL允许用户进行不受限制的用户访问。 添加一个
groups条目,并指定包含用户的组:#cloud-config users: - default - name: user2 gecos: User D. Two sudo: ["ALL=(ALL) NOPASSWD:ALL"] groups: wheel,adm,systemd-journal ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AA...vz user@domain.com chpasswd: list: | root:password cloud-user:mypassword user2:mypassword2 expire: False
-
添加
为用户配置一个专用的
root访问权限 :通过修改
name选项,为users部分中的用户root创建一个条目:users: - name: root chpasswd: list: | root:password expire: False可选:为
root用户设置 SSH 密钥:users: - name: root ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AA..vz user@domain.com
要更改默认的
cloud-init用户名,请遵循:添加行
user: <username>,使用新的默认用户名替换 <username> :#cloud-config user: username password: mypassword chpasswd: {expire: False} ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AAA...SDvz user1@yourdomain.com - ssh-rsa AAB...QTuo user2@yourdomain.com
要为新用户重置密码 :
将行
chpasswd: {expire: False}改为chpasswd: {expire: True}:#cloud-config password: mypassword chpasswd: {expire: True} ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AAA...SDvz user1@yourdomain.com - ssh-rsa AAB...QTuo user2@yourdomain.com注意-
这可让密码过期,因为除非您另有说明,否则
password和chpasswd只针对默认的用户执行操作。 -
这是一个全局设置。当您将
chpasswd设置为True时,您创建的所有用户都需要在登录时更改其密码。
-
这可让密码过期,因为除非您另有说明,否则
要设置 root 密码 :
在
chpasswd部分中创建一个用户列表:注意空格很重要。请勿在您的用户列表的冒号之前或之后包括空格。如果您包含空格,密码会被设置为包括空格。
#cloud-config ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AAA...SDvz user1@yourdomain.com - ssh-rsa AAB...QTuo user2@yourdomain.com chpasswd: list: | root:myrootpassword cloud-user:mypassword expire: False注意如果使用此方法设置用户密码,则必须在本节中设置 all passwords。