ssh:“PAM帐户配置拒绝访问”,适用于一个非root用户,但不适用于另一个非root用户

ssh:“PAM帐户配置拒绝访问”,适用于一个非root用户,但不适用于另一个非root用户

在我正在初始化的虚拟机上,我能够以一个非 root 用户身份 ( admin) 登录,但不能以另一个非 root 用户身份 ( tbbscraper) 通过公钥身份验证通过 SSH 登录。我在任何日志文件中都能找到的唯一错误消息是

Sep 18 17:21:04 [REDACTED] sshd[18942]: fatal: Access denied for user tbbscraper by PAM account configuration [preauth]

在客户端,这种综合症是

$ ssh -v -i [REDACTED] tbbscraper@[REDACTED]
...
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: [REDACTED]
debug1: Authentications that can continue: publickey
debug1: Trying private key: [REDACTED]
debug1: read PEM private key done: type RSA
Connection closed by [REDACTED]

将“tbbscraper”更改为“admin”可以成功登录:debug1: Authentication succeeded (publickey).而不是出现“连接已关闭”消息。

这似乎不是一个权限问题......

# for x in admin tbbscraper
> do ls -adl /home/$x /home/$x/.ssh /home/$x/.ssh/authorized_keys
> done
drwxr-xr-x 3 admin admin 4096 Sep 18 17:19 /home/admin
drwx------ 2 admin admin 4096 Sep 18 16:53 /home/admin/.ssh
-rw------- 1 admin admin  398 Sep 18 17:19 /home/admin/.ssh/authorized_keys
drwxr-xr-x 3 tbbscraper tbbscraper 4096 Sep 18 17:18 /home/tbbscraper
drwx------ 2 tbbscraper tbbscraper 4096 Sep 18 17:18 /home/tbbscraper/.ssh
-rw------- 1 tbbscraper tbbscraper  398 Sep 18 17:18 /home/tbbscraper/.ssh/authorized_keys

# cmp /home/{admin,tbbscraper}/.ssh/authorized_keys ; echo $?
0

... 也不是 PAM 级别的访问控制问题...

# egrep -v '^(#|$)' /etc/security/*.conf
#

... 因此,对类似问题的现有答案似乎都不适用。我得到的唯一其他证据是:

root@[REDACTED] # su - admin
admin@[REDACTED] $

root@[REDACTED] # su - tbbscraper
su: Authentication failure
(Ignored)
tbbscraper@[REDACTED] $

这表明存在一些更大规模的 PAM 问题,但我找不到其中任何明显的错误/etc/pam.d。有什么想法吗?

VM 是一个 EC2 实例,操作系统是 Debian 7.1(亚马逊的现成 AMI)。

答案1

经过所有这些,结果发现这是一个字符的拼写错误/etc/shadow。找出不同之处:

admin:!:15891:0:99999:7:::
tbbscraper:!::15966:0:99999:7:::

没错,该tbbscraper行的感叹号后面有两个冒号。这会将所有字段推到一起,让 PAM 认为该帐户已于 1970 年 1 月 8 日到期。

答案2

感谢您发布您的问题。我遇到了同样的错误,但我的问题与影子文件无关。我找到了解决办法,并想发布一个答案,供其他在 Google 上搜索此错误的人参考。这个 serverfault 问题首先出现。

尝试检查一下/etc/security/access.conf

我们使用 Active Directory 进行身份验证,但我需要以本地非 AD 用户 (jenkins) 身份登录。我的老板最初在以下行中设置了该框/etc/security/access.conf

+:root:ALL
-:ALL:ALL

我将其更改为以下内容,登录现在可以正常工作;我甚至不需要重新启动任何服务。

+:jenkins:ALL
+:root:ALL
-:ALL:ALL

答案3

就我而言,我当时正在重命名本地 CentOS 6 用户,但忘记在 /etc/shadow 中重命名他们(这些用户是无密码密钥认证的,我并没有想到),因此新用户名的记录在 /etc/shadow 中不存在。在 /var/log/secure 中,它给出了 unix_chkpwd 错误和 PAM 拒绝访问:

    unix_chkpwd[12345]: could not obtain user info (user2)
    sshd[12354]: fatal: Access denied for user user2 by PAM account configuration

答案4

我今天早上遇到了同样的问题,但服务器根据 Active Directory 对用户进行身份验证。结果发现用户的域密码已过期。

相关内容