CentOS 要求使用 sudo 输入两次密码,登录

CentOS 要求使用 sudo 输入两次密码,登录

每次登录或 sudo 提示时,服务器总是在第一次输入密码时拒绝,但第二次输入时会接受。我发现此主题描述了看似相同的问题,但按照那里描述的解决方案尝试我的 /etc/pam.d/system-auth 文件对我来说不起作用。例如,将“try_first_pass”的第一个实例更改为“use_first_pass”会导致登录身份验证不断失败,删除“nullok”也是如此。有谁知道需要更改什么才能使系统第一次就接受正确的密码?

/etc/pam.d/系统身份验证:

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_fprintd.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        sufficient    pam_ldap.so use_first_pass
auth        required      pam_deny.so

account     required      pam_unix.so broken_shadow
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     [default=bad success=ok user_unknown=ignore] pam_ldap.so
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3 type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    sufficient    pam_ldap.so use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_ldap.so

编辑:为了回应评论,这里是 /etc/pam.d/login:

#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth       include      system-auth
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
session    optional     pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      system-auth
-session   optional     pam_ck_connector.so

让我补充一下,我所知道的有关授权的信息都是我在过去一个小时左右搜索到的——我正绝望地解决这个问题,因为我们的 IT 人员还没有找到。所以请相应地提出您的答案。我对 Linux 有相当的了解。

编辑:回复另一条评论,以下是典型登录尝试期间 /var/log/secure 中显示的内容(两次输入的密码均正确)。服务器名称和 IP 等信息已更改。

Oct 28 07:37:41 myserver sshd[944]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=asus-laptop-abc.def.ghi.edu  user=matt
Oct 28 07:37:41 myserver sshd[944]: pam_ldap: ldap_starttls_s: Operations error
Oct 28 07:37:43 myserver sshd[944]: Failed password for matt from 123.456.78.90 port 12345 ssh2
Oct 28 07:37:47 myserver sshd[944]: pam_sss(sshd:account): Access denied for user matt: 10 (User not known to the underlying authentication module)
Oct 28 07:37:47 myserver sshd[944]: Accepted password for matt from 123.456.78.90 port 12345 ssh2
Oct 28 07:37:47 myserver sshd[944]: pam_unix(sshd:session): session opened for user matt by (uid=0)

有趣的是,上面的情况与我第一次输入真正错误的密码时发生的情况不同,在这种情况下,第一次pam_ldap调用后会有以下附加行:

Oct 28 08:13:13 myserver sshd[1054]: pam_ldap: error trying to bind as user "uid=matt,ou=People,dc=abc,dc=ghi,dc=edu" (Invalid credentials)

那么,在前一种情况下,系统知道凭证是正确的,但仍然登录失败?!当我调用 use sudo 时,会发生以下情况,这也会强制进行双重登录(在这种情况下使用 nano 读取 /var/log/secure):

Oct 28 08:13:27 myserver  sudo: pam_unix(sudo:auth): authentication failure; logname=matt uid=1000 euid=0 tty=/dev/pts/2 ruser=matt rhost=  user=matt
Oct 28 08:13:32 myserver sudo:     matt : TTY=pts/2 ; PWD=/home_dir/home/matt ; USER=root ; COMMAND=/bin/nano /var/log/secure

编辑:当我以 root 身份登录时不存在此问题!它在第一次尝试时就接受了密码,/var/log/secure 看起来像这样,我认为这是正常的:

Oct 29 14:25:58 myserver sshd[7074]: Accepted password for root from 123.456.78.90 port 12345 ssh2
Oct 29 14:25:58 myserver sshd[7074]: pam_unix(sshd:session): session opened for user root by (uid=0)

答案1

看来我没有足够的声誉来发表评论,因此这有点像是在盲目地回答。

pam_ldap:ldap_starttls_s:操作错误

我想知道你的日志的这一部分是否指出了罪魁祸首。我怀疑你的 ldap 配置以某种方式错误处理了 tls,导致连接失败。

注意每个模块的响应:

pam_ldap: ldap_starttls_s: Operations error
pam_sss(sshd:account): Access denied for user matt: 10 (User not known to the underlying authentication module)
pam_unix(sshd:session): session opened for user matt by (uid=0)

因此,这里我们看到 ldap 说由于错误而失败,sss 说它不知道你是谁,而 local auth 说成功。

需要考虑的方向:

  1. ldap 服务器日志中是否有任何错误?
  2. 如果可能的话,您能否禁用 TLS 并查看是否有效?
  3. ldapsearch 有用吗?

相关内容