我是网靴安装Ubuntu焦点,我有所有基本的东西工作,没有问题。我使用这个模板作为用户数据yaml文件,它使用户,设置密码,并导入我指定的任何ssh键:
#cloud-config
autoinstall:
apt:
geoip: true
preserve_sources_list: false
primary:
- arches: [amd64, i386]
uri: http://us.archive.ubuntu.com/ubuntu
identity: {
hostname: ,
password: ,
realname: ,
username:
}
user-data:
timezone: America/Los_Angeles
keyboard: {layout: us, toggle: null, variant: ''}
locale: en_US
network:
ethernets:
mainif:
match:
macaddress:
set-name: eth0
eth0:
dhcp4: true
version: 2
ssh:
allow-pw: true
authorized-keys: [ ]
install-server: true
version: 1我想使它,以便用户必须更改他们的密码在第一次登录。
我尝试过的事情:

chpasswd: {expire: True},安装程序会崩溃,说chpasswd是意外的。自动安装程序有我还没有找到的内置功能吗?
发布于 2021-03-01 22:44:02
编辑:我将保留我在下面共享的内容,但我意识到,当您真正想要强迫用户在第一次登录时更改密码时,我会专注于更改用户创建选项。
cloud-init似乎确实有一个过期密码选项。因此,您仍然可以使用late-commands修改文件/target/var/lib/cloud/seed/nocloud-net/user-data。
https://cloudinit.readthedocs.io/en/latest/topics/modules.html#set-passwords
默认情况下,系统上的所有用户的密码都将过期(这意味着用户下次登录时必须重置密码)。
查看来源,该语句似乎只适用于使用chpasswd指定密码的用户。向user-data添加如下配置可能会迫使用户在下一次登录时更改密码
chpasswd:
list: |
:以下的<#>Original帖子
您必须使用late-commands调用sed来修改文件/target/var/lib/cloud/seed/nocloud-net/user-data。
服务器安装程序subiquity接受您的autoinstall配置,并创建cloud-init配置,以便在第一次引导时使用。然而,subiquity只支持cloud-init实际能够完成的一个子集。查看源代码,您可以看到subiquity实际上将此设置硬编码到'lock_passwd': False,中的位置。
您无法在late-commands中更改用户,因为用户还不存在。用户在第一次引导时由cloud-init创建。
这个片段还没有经过测试,但是像这样的autoinstall配置应该可以做您想做的事情。
late-commands:
- sed -ie 's/lock.passwd.*/lock_passwd: true,/' /target/var/lib/cloud/seed/nocloud-net/user-data小细节。根据子版本的不同,user-data文件可能包含lock_passwd或lock-passwd。regex lock.passwd应该匹配两者,而cloud-init需要lock_passwd。在最初的20.04版本- https://github.com/canonical/subiquity/pull/784中有一个错误。
https://askubuntu.com/questions/1320127
复制相似问题