问题现象
启用或修改Linux系统的PAM(Pluggable Authentication Modules)模块配置后,在系统日志/var/log/secure中,出现以下任一错误会导致无法登录:
requirement "uid >= 1000" not met by user "xxxx"user xxxx (0) has 5 failed attempts, failed attempts threshold is 3Refused user xxxx for service sshd
解决方案
请确保至少有一个管理员账户(root用户或其他拥有sudo权限的普通用户)可以登录实例,否则无法修改配置文件。
问题定位
使用管理员账户通过VNC连接登录ECS实例。
访问ECS控制台-实例。在页面左侧顶部,选择目标资源所在的资源组和地域。
进入目标实例详情页,单击远程连接,选择通过VNC远程连接。输入账号和密码,登录ECS实例。
检查认证日志,定位关键错误信息。
账户因失败尝试被锁定:若日志包含
Maximum amount of failed attempts was reached,说明配置了连续密码错误后锁定用户账户,需解除账户锁定。sudo grep -i "Maximum amount of failed attempts" /var/log/secure用户登录权限被限制:若日志包含
requirement "uid >= 1000" not met by user,说明配置了禁止UID小于1000的用户登录,需解除UID限制。sudo grep -i "not met by user" /var/log/secure用户被列入黑名单:若日志包含
Refused user,说明配置了黑白名单文件控制用户访问,目标用户可能被显式拒绝或未被列入白名单,需解除用户黑白名单限制。sudo grep -i "Refused user" /var/log/secure
解除账户锁定
检查用户的失败登录次数。
将<username>替换为登录失败的用户名。
sudo sudo pam_tally2 -u <username>若输出的失败次数大于0,则表示账户被锁定。
解锁账户。
sudo pam_tally2 -u <username> -r永久修复(可选)。
如需禁用锁定策略,可编辑
/etc/pam.d/system-auth文件,注释包含pam_tally2.so的规则。sudo vim /etc/pam.d/system-auth如下配置,表示普通用户和root用户连续三次输入错误密码会被锁定,50秒后解锁。
auth required pam_tally2.so deny=3 unlock_time=50上述使用的是
pam_tally2模块,不同的PAM版本,设置模块有所不同,请参见Linux PAM SAG。重新登录实例,验证登录是否正常。
解除UID限制
定位配置文件。
查找包含
pam_succeed_if的配置文件,如/etc/pam.d/sshd、/etc/pam.d/login或/etc/pam.d/system-auth。sudo grep -r "pam_succeed_if" /etc/pam.d/检查并修改配置。
sudo vim /etc/pam.d/sshd对每个包含
auth required pam_succeed_if.so uid >= 1000的文件,在其前面添加 # 号注释对应行。# auth required pam_succeed_if.so uid >= 1000重新登录实例,验证登录是否正常。
解除用户黑白名单限制
定位配置文件。
查找包含
pam_listfile的配置文件,如/etc/pam.d/sshd、/etc/pam.d/login或/etc/pam.d/system-auth。sudo grep -r "pam_listfile" /etc/pam.d/检查配置。
sudo vim /etc/pam.d/sshd查看匹配的配置行,确认是白名单 (
sense=allow) 还是黑名单 (sense=deny),并找到名单文件路径(如/etc/ssh/whitelist或/etc/ssh/blacklist)。# 设置了访问白名单,仅允许白名单用户允许登录 auth required pam_listfile.so item=user sense=allow file=/etc/ssh/whitelist onerr=fail # 设置了访问黑名单,禁止黑名单用户登录 auth required pam_listfile.so item=user sense=deny file=/etc/ssh/blacklist onerr=fail根据配置类型修改配置文件。
白名单:在文件末尾添加用户名,每行一个用户,保存退出。
sudo vim /etc/ssh/whitelist黑名单:删除包含目标用户名的行,保存退出。
sudo vim /etc/ssh/blacklist
重新登录实例,验证登录是否正常。