pam_unix(sudo:auth):对话失败,auth无法识别[用户名]的密码

时间:2019-08-26 12:07:07

标签: ssh ansible centos pam sshd

我正在使用 ansible 来配置Centos 7产品集群。不幸的是,使用 ansible Tiemout和Linux可插拔身份验证模块( pam error conversation failed执行以下命令会导致结果。

相同的 ansible 命令效果很好,可以对在 vagrant 框中疯狂的虚拟实验室执行。

Ansible命令

$ ansible master_server -m yum -a 'name=vim state=installed' -b -K -u lukas -vvvv
123.123.123.123 | FAILED! => {
    "msg": "Timeout (7s) waiting for privilege escalation prompt: \u001b[?1h\u001b=\r\r"
}

SSHd日志

# /var/log/secure
Aug 26 13:36:19 master_server sudo: pam_unix(sudo:auth): conversation failed
Aug 26 13:36:19 master_server sudo: pam_unix(sudo:auth): auth could not identify password for [lukas]

5 个答案:

答案 0 :(得分:3)

假设 lukas 用户是本地帐户,您应该查看 pam_unix.so 模块在 system-auth 中如何声明pam文件。但是,对于特定答案,需要有关用户帐户和pam配置的更多信息。


添加足够的 auth足够的pam_permit.so 即可获得访问权限。不建议在最不安全的测试环境中使用它。在pam_permit手册页中:

   pam_permit is a PAM module that always permit access. It does nothing
   else.

以这种方式将 pam_permit.so 添加为足够进行身份验证将完全绕过所有用户的安全性。

答案 1 :(得分:2)

我发现了问题。原来是PAM's auth 模块问题!让我描述一下如何解决。

上下文:

我设置了机器进行调试-即打开了四个终端窗口。

  • 第一终端(本地计算机):在这里,我正在执行ansible prduction_server -m yum -a 'name=vim state=installed' -b -K -u username
  • 第二终端(生产服务器):在这里,我执行了journalctl -f(系统级日志)。
  • 第三终端(生产服务器):在这里,我执行了tail -f /var/log/secure(sshd的日志)。
  • 第四终端(生产服务器):在这里,我正在编辑vi /etc/pam.d/sudo文件。

每次我从第一终端执行命令时,我都会收到以下错误消息:

# ansible error - on local machine
Timeout (7s) waiting for privilege escalation prompt error.
# sshd error - on remote machine
pam_unix(sudo:auth): conversation failed
pam_unix(sudo:auth):  [username]

我向我的大学展示了我的整个设置,他告诉我该错误与“ PAM” 有关。坦白说,这是我第一次听说PAM。因此,我必须阅读此PAM Tutorial。 我发现,该错误与 /etc/pam.d/sudo 模块中的 auth 接口有关。在Internet上进行挖掘时,我使用pam_permit.so控制标志在这个sufficient模块上摸索了,解决了我的问题!

解决方案

基本上,我在auth sufficient pam_permit.so文件中添加了/etc/pam.d/sudo行。看下面的例子。

$ cat /etc/pam.d/sudo
#%PAM-1.0
# Fixing ssh "auth could not identify password for [username]"
auth       sufficient   pam_permit.so

# Below is original config
auth       include      system-auth
account    include      system-auth
password   include      system-auth
session    optional     pam_keyinit.so revoke
session    required     pam_limits.so
session    include      system-auth

结论:

我花了4天的时间来解决这个问题。我偶然发现了数十种不适合我的解决方案,从“ ansible主机/配置文件中的重复sudo密码” “ ldap特定配置” 到获得建议总是脾气暴躁的系统管理员!

注意:

因为我不是PAM专家​​,所以我不知道此修补程序是否会影响系统的其他方面,因此请谨慎复制粘贴此代码!但是,如果您是PAM的专家,请与我们分享替代解决方案或意见。谢谢!

答案 2 :(得分:0)

自从使用 pacman 将 sudo 升级到 1.9.4 版以来,我遇到了这个错误。我没有注意到 pacman 提供了一个新的 sudoers 文件。

我只需要合并 /etc/sudoers.pacnew。 请参阅此处了解更多详情:https://wiki.archlinux.org/index.php/Pacman/Pacnew_and_Pacsave

我知道这不能回答最初的问题(与 Centos 系统有关),但这是错误消息的最高谷歌结果,所以我想我会把我的解决方案留在这里以防万一有人偶然发现这个问题来自基于 Arch Linux 的操作系统。

答案 3 :(得分:0)

发现自己处于同样的情况,我的头发被扯掉了。就我而言,隐藏在 sudoers 文件的末尾,有一行:

%sudo ALL=(ALL:ALL) ALL

这会撤销之前的授权。如果您不使用 sudo 组,则可以安全地删除此行。

答案 4 :(得分:-2)

当我尝试使用sudo service apache2 restart重新启动apache2时遇到了相同的错误

登录到root用户后,我能够看到apache2配置的真实错误。原来,几个月前我删除了站点的SSL证书文件,但是没有在apache2中禁用该站点。 a2dissite做到了。