直接用chage -d 0命令即可实现:先用useradd -m和passwd创建用户并设可用初始密码,确保passwd -S显示P状态,再执行sudo chage -d 0 username将密码修改日设为1970-01-01触发过期,登录即强制改密。

直接用 chage -d 0 命令就能实现。原理不是加开关,而是让系统判定密码“已过期”,用户认证成功后立即进入改密流程。
创建用户并设置可用初始密码
这是强制改密的前提,缺一不可:
- 运行
sudo useradd -m username创建用户及家目录 - 执行
sudo passwd username设置一个临时密码(如P@ssw0rd2026) - 检查状态:
sudo passwd -S username输出中必须含 P(表示密码可用),不能是 NP(无密码)或 L(锁定)
标记密码为“立即需更新”
这条命令是核心操作:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- 执行
sudo chage -d 0 username,把“上次密码修改日期”设为 Unix 时间起点(1970-01-01) - 验证效果:
sudo chage -l username中,“Password must be changed” 应显示 yes;“Password expires” 显示 never 是正常现象 - 注意:不要误用
-E(账户整体过期)或-M(最大有效期),它们不触发首次登录改密
确认 PAM 模块正常启用
绝大多数主流发行版默认支持,但可快速核对:
- Debian/Ubuntu 查
/etc/pam.d/common-password - RHEL/CentOS 查
/etc/pam.d/system-auth - 确认存在类似行:
password [success=1 default=ignore] pam_unix.so ... - 只要没显式禁用该模块,用户输入正确旧密码后就会自动进入改密环节
测试与常见问题排查
登录验证是最可靠的方式:
- 用
ssh username@localhost或本地终端登录,输入初始密码后应立刻看到提示:
You are required to change your password immediately (root enforced) - 若卡住或报 Authentication token manipulation error,优先检查:
• 家目录归属是否正确:sudo chown -R username:username /home/username
• 磁盘空间是否充足
• SELinux 是否限制(临时用setenforce 0排查) - 该机制对 SSH 密码登录、图形界面、控制台均生效;但 SSH 密钥登录会跳过

















