先确认是否被pam_faillock锁定:运行faillock --user username,若显示failed login count≥阈值且含lockout time,即为此机制锁定;解除命令为faillock --user username --reset,立即生效,无需重启服务。

在 Linux 中,高风险用户账号被锁定通常是因为多次登录失败触发了 PAM 的 pam_faillock 模块(常见于 RHEL/CentOS 8+、Fedora、Debian 12+ 等),或使用了 faillog + usermod 手动锁定。解除锁定需先确认锁定机制,再针对性操作。
确认账号是否被 pam_faillock 锁定
这是当前主流发行版默认启用的防暴力破解机制。检查方法:
- 运行
faillock --user <username></username>,若输出中显示Failed login count: N(N ≥ 阈值)且有Lockout time,说明被pam_faillock锁定 - 查看配置:检查
/etc/pam.d/common-auth(Debian/Ubuntu)或/etc/pam.d/system-auth(RHEL/CentOS)中是否包含pam_faillock.so行
用 faillock 命令清除锁定状态
推荐优先使用官方工具重置计数器和解锁:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 清除指定用户的失败记录:
faillock --user <username> --reset</username> - 清除所有用户的失败记录(谨慎):
faillock --reset - 执行后立即生效,无需重启服务或重新加载 PAM
检查并修复其他可能的锁定方式
某些环境还叠加了传统锁定手段,需一并排查:
-
密码字段被加锁:运行
sudo grep <username> /etc/shadow</username>,若第二字段(密码域)为!或!!开头,说明密码被禁用,用sudo usermod -p '' <username></username>清空密码(不推荐)或sudo passwd <username></username>重设密码 -
账户过期或禁用:运行
chage -l <username></username>查看账户状态;若Account expires已过期,用sudo chage -E -1 <username></username>取消过期 -
shell 被设为 /usr/sbin/nologin:检查
getent passwd <username></username>第七字段;如需恢复登录,执行sudo usermod -s /bin/bash <username></username>
预防再次误锁的操作建议
解除后建议同步优化策略,避免运维误操作或自动化脚本反复触发:
- 调整
pam_faillock阈值:编辑对应 PAM 配置文件,修改deny=N(如设为deny=5)和unlock_time=900(15 分钟自动解锁) - 对管理账号(如 root、backup、deploy)添加例外:在
pam_faillock.so行末尾加even_deny_root_root_only或配合auth [default=ignore] pam_succeed_if.so user in root,admin - 定期审计失败登录:
journalctl -u sshd --since "2 hours ago" | grep "Failed password"










