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


24

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

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)。


/etc/pam.d/sshd
GioMac

@GioMac没关系,我发现了问题。
zwol

Answers:


29

毕竟,事实证明这是的一个字符的错字/etc/shadow。指出不同:

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

是的,tbbscraper在线上的感叹号后面有两个冒号。这将所有字段推到一个字段,并使PAM认为该帐户于1970年1月8日到期。


9
感谢您的发布。这对我很有用:我在/ etc / passwd中手动创建了一个用户条目,却忘记添加相应的/ etc / shadow条目。
spazm 2014年

6
@spazm感谢您的评论。这对我很有用:我从另一台计算机上手动复制了用户,却忘记了复制该用户的/ etc / shadow条目而没有密码。
Jayen 2015年

8

感谢您发布问题。我遇到了同样的错误,但是我的问题与影子文件无关。我找到了解决方法,并希望为其他使用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

出现相同的错误消息。关闭sshd并以调试模式重新启动它

    /usr/sbin/sshd -ddd

这表明了原因:

    debug3: User autossh not allowed because account is locked
            ...
    input_userauth_request: invalid user <username> [preauth]

支票帐户:

    passwd -S <username>

这表明该帐户已被锁定(标志“ L”),通过设置新密码来解锁该帐户:

    passwd <username>

做完了


2

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


2
相同的现象,用户帐户信息的来源不同:-)两年前,我可能已经针对ssh和/或PAM提交了一个错误,要求更清楚地记录为什么拒绝登录尝试;有没有告诉谁的人一个安全的说法做出的尝试失败的原因,但这并不适用于系统日志。
zwol 2015年

2

在我的情况下,我正在重命名本地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

1
usermod(8)是您的下一次朋友;-)
Michael Shigorin

0

以我为例,在“有趣”的条件下,ext4 rootfs损坏后,它被垃圾打到了“ / etc / tcb / USER / shadow”。它看起来很粗糙,因此在初次检查时没有发现(目前无法重新安装该节点,但必须这样做)。


0

我遇到了同样的问题,建议的选项均无效。但是我在其中一个论坛(https://ubuntuforums.org/showthread.php?t=1960510)中发现了一种“变通方法”,可以很好地工作。

编辑/etc/ssh/sshd_config并设定

UsePAM no

虽然这可能不是真正的解决方案,但是由于我的机器肯定存在问题(昨天它工作正常!),但这至少可以正常工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.