本文介绍在Linux操作系统内启用PAM认证模块后,出现无法登录Linux实例问题的解决方案。
什么是PAM
PAM (Pluggable Authentication Modules)是一个身份认证机制,可用于Linux系统中来实现用户身份验证,加强系统的安全。
如果PAM模块配置错误,可能会导致用户无法通过身份认证,即使输入了正确的密码也无法登录Linux实例。这种情况下,建议您联系管理员检查PAM模块的配置,并根据需要进行相应的调整,以确保能够成功登录Linux实例。常见的与远程登录实例的服务有ssh和login,这两个服务在pam对应的配置文件如下:
/etc/pam.d/login
:控制台(管理终端)对应的配置文件。例如密码验证、账户锁定和限制登录IP等。/etc/pam.d/sshd
:SSH远程登录的认证信息。/etc/pam.d/system-auth
:系统级别的认证信息,例如密码策略、用户信息和访问控制等。
如何修改PAM配置
仅root用户(管理员)支持修改PAM配置,若您为非root用户,请联系管理员检查并修改PAM配置。
PAM配置通常是为了加强系统安全,在修改PAM配置之前,请谨慎评估是否需要修改,以及所做的更改不会破坏系统的正常功能或导致安全漏洞。
(可选)若root用户输入正确密码也无法登录,请先解锁root用户。否则,请跳过该步骤。
使用root用户登录Linux实例。
具体操作,请参见使用VNC登录实例。
执行以下命令,打开secure日志,查找包含pam字段的行,并确定与PAM设置相关联的模块名称。
cat /var/log/secure
例如以下示例,模块名称为pam_succeed_if。
pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root".
根据获取的模块名称,查找PAM配置文件是否存在相关配置。如存在,参考步骤5修改。
执行以下命令,获取以下3个PAM配置文件的配置信息。
cat /etc/pam.d/login cat /etc/pam.d/sshd cat /etc/pam.d/system-auth
使用grep命令,查找各配置文件中是否存在与secure日志相关的配置行。
grep "模块名称" /etc/pam.d/login grep "模块名称" /etc/pam.d/sshd grep "模块名称" /etc/pam.d/system-auth
例如,查找包含模块名称pam_succeed_if的行,执行以下命令:
grep "pam_succeed_if" /etc/pam.d/login grep "pam_succeed_if" /etc/pam.d/sshd grep "pam_succeed_if" /etc/pam.d/system-auth
若PAM配置文件存在相关配置,您将看到类似输出:
/etc/pam.d/login:auth requisite pam_succeed_if.so uid >= 1000 quiet_success /etc/pam.d/system-auth:auth requisite pam_succeed_if.so uid >= 1000 quiet_success
若PAM配置文件存在相关配置,打开对应的配置文件,根据实际需求修改与secure日志中相关的配置,解除限制。
重要所有包含secure中模块名称的PAM配置文件,均需要修改。
执行以下命令,打开某一个对应配置文件。
vim <配置文件名称>
按
i
键,根据实际需求,注释或更改对应配置。PAM配置文件的语法信息,请参见PAM 配置(参考)。完成配置后,按
Esc
键,输入:wq
保存。(可选)重复步骤a~c,修改其他配置文件。
重新登录ECS实例,如果可以正常登录,说明问题已修复。
因PAM配置不当导致登录失败的常见错误日志和对应解决方案
secure日志提示:“requirement "uid >= 1000" not met by user "root"”
secure日志提示:Refused user xxx(用户名)for service sshd
问题原因
PAM配置文件中,设置了禁止xxx用户登录ECS实例。
解决方法
方法一:使用其他用户登录ECS实例。
方法二:查看PAM配置文件中是否存在相关配置并修改,来解除限制。具体操作,请参见步骤3~4。
配置文件中,存在类似如下配置表示有该限制:
# 设置了访问白名单,仅允许白名单用户允许登录 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
如何修改
将允许登录的用户添加到白名单或移除黑名单,或注释该配置。
登录Linux系统的ECS实例时,提示“Maximum amount of failed attempts was reached”
问题原因
连续多次输入错误密码,触发系统PAM认证模块策略限制,导致用户被锁定,无法登录Linux实例。
解决方法
若root用户被锁定,请先解锁root用户。否则跳过该步骤。
使用root用户登录Linux实例。
具体操作,请参见使用VNC登录实例。
执行如下命令,查看PAM配置文件中是否存在认证限制。
cat /etc/pam.d/system-auth
例如,系统返回如下时,表示普通用户和root用户连续三次输入错误密码,50秒后才能再次登录Linux实例。
解决问题。
方法一:等待PAM设置的冻结时长(例如50秒),待系统解冻账户后,再重新登录实例。
方法二:修改配置文件(下文
/etc/pam.d/system-auth
为例进行说明,其他配置文件修改方法类似)。执行如下命令,打开
/etc/pam.d/system-auth
配置文件。vim /etc/pam.d/system-auth
按
i
进入编辑模式。根据业务需要,注释、修改或删除该配置。
本文以注释配置为例进行说明。
auth required pam_tally2.so deny=3 unlock_time=50 #原文代码:普通用户和root用户连续三次输入错误密码会被锁定,50秒后才能解锁。 #auth required pam_tally2.so deny=3 unlock_time=50 #注释后
说明此处使用的是
pam_tally2
模块,不同的PAM版本,设置可能有所不同,详情请参见Linux PAM SAG。