zwo*_*wol 28 remote-access ssh pam
在我正在初始化的 VM 上,我能够以一个非 root 用户 ( admin) 的身份登录,但不能以另一个 ( tbbscraper) 身份通过 SSH 使用公钥身份验证登录。我可以在任何日志文件中找到的唯一错误消息是
Sep 18 17:21:04 [REDACTED] sshd[18942]: fatal: Access denied for user tbbscraper by PAM account configuration [preauth]
Run Code Online (Sandbox Code Playgroud)
在客户端,该综合症是
$ 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]
Run Code Online (Sandbox Code Playgroud)
将 '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
Run Code Online (Sandbox Code Playgroud)
... 也不是 PAM 级别的访问控制问题 ...
# egrep -v '^(#|$)' /etc/security/*.conf
#
Run Code Online (Sandbox Code Playgroud)
......所以对类似问题的现有答案似乎都不适用。我得到的唯一其他证据是:
root@[REDACTED] # su - admin
admin@[REDACTED] $
Run Code Online (Sandbox Code Playgroud)
但
root@[REDACTED] # su - tbbscraper
su: Authentication failure
(Ignored)
tbbscraper@[REDACTED] $
Run Code Online (Sandbox Code Playgroud)
这表明存在一些更大规模的 PAM 问题,但我找不到/etc/pam.d. 有任何想法吗?
VM 是一个 EC2 实例,操作系统是 Debian 7.1(亚马逊的现成 AMI)。
zwo*_*wol 35
毕竟,结果是/etc/shadow. 指出不同:
admin:!:15891:0:99999:7:::
tbbscraper:!::15966:0:99999:7:::
Run Code Online (Sandbox Code Playgroud)
没错,就tbbscraper行上感叹号后有两个冒号。这会将所有字段推到一个之上,并使 PAM 认为该帐户已于 1970 年 1 月 8 日到期。
小智 9
感谢您发布您的问题。我遇到了同样的错误,但我的问题与影子文件无关。我找到了我的修复程序,并希望为其他任何在谷歌上搜索此错误的人发布答案。这个服务器故障问题首先出现。
尝试检查/etc/security/access.conf!
我们使用 Active Directory 进行身份验证,但我需要以本地非 AD 用户 (jenkins) 身份登录。我的老板最初在以下内容中设置了带有以下行的框/etc/security/access.conf:
+:root:ALL
-:ALL:ALL
Run Code Online (Sandbox Code Playgroud)
我将其更改为以下内容,现在可以登录了;我什至不需要重新启动任何服务。
+:jenkins:ALL
+:root:ALL
-:ALL:ALL
Run Code Online (Sandbox Code Playgroud)
就我而言,我正在重命名本地 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
Run Code Online (Sandbox Code Playgroud)
小智 5
有相同的错误消息。关闭 sshd 并以调试模式重新启动它
/usr/sbin/sshd -ddd
Run Code Online (Sandbox Code Playgroud)
这表明了原因:
debug3: User autossh not allowed because account is locked
...
input_userauth_request: invalid user <username> [preauth]
Run Code Online (Sandbox Code Playgroud)
已查账户:
passwd -S <username>
Run Code Online (Sandbox Code Playgroud)
这表明该帐户已被锁定(标志“L”)通过设置新密码解锁帐户:
passwd <username>
Run Code Online (Sandbox Code Playgroud)
完毕。