我正在使用ansible来提供我的Centos 7产品集群。不幸的是,执行以下命令的结果是使用ansible Tiemout
和(pam) error conversation failed
。
同样的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]
发布于 2019-08-27 10:58:43
我发现了问题所在。原来是帕姆氏 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
文件。每次我从1终端执行命令时,都会得到以下错误:
# 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教程。我发现,该错误与位于/etc/pam.d/sudo模块中的auth接口有关。在互联网上,我在这个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 host/config文件中的复制sudo密码”、"ldap特定配置“到从总是脾气暴躁的系统管理员那里得到建议!
注意:
由于我不是PAM方面的专家,所以我不知道此修复是否会影响系统的其他方面,所以请小心,不要盲目复制粘贴这段代码!不过,如果你是PAM专家,请与我们分享替代解决方案或投入。谢谢!
发布于 2020-03-12 18:10:35
假设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将完全绕过所有用户的安全性。
发布于 2021-05-04 18:10:49
我发现自己也处于同样的境地,把头发扯掉了。在我的例子中,隐藏在sudoers文件末尾的一行是:
%sudo ALL=(ALL:ALL) ALL
这就撤销了它之前的授权。如果您没有使用sudo组,那么可以安全地删除这一行。
https://stackoverflow.com/questions/57657645
复制相似问题