ssh 和 sudo:pam_unix(sudo:auth):对话失败,auth 无法识别 [username] 的密码
ssh and sudo: pam_unix(sudo:auth): conversation failed, auth could not identify password for [username]
我正面临一个奇怪的行为,试图通过无密码登录的 ssh 运行 rsync 作为 sudo。
这是我对几十台服务器所做的事情,我在连接到几个 Ubuntu 18.04.4 服务器
时遇到了这个令人沮丧的问题
前提
使用帐户 USER 从客户端到服务器的无密码 SSH 有效
很好
当我登录 SERVER 时,我可以使用 sudo 一切
帐户 USER
在服务器上,我将以下内容添加到 /etc/sudoers
用户 ALL=NOPASSWD:/usr/bin/rsync
现在,如果我以用户 USER 从机器 CLIENT 启动这个简单测试,我会收到以下 sudo 错误消息:
$ ssh utente@192.168.200.135 -p 2310 sudo rsync
sudo: no tty present and no askpass program specified
此外,查看服务器的 /var/log/auth.log 我发现了这个错误:
sudo: pam_unix(sudo:auth): conversation failed
sudo: pam_unix(sudo:auth): auth could not identify password for [user]
感谢 Centos,我找到了解决方案。事实上,由于 Centos 中 /etc/sudoers 的配置更复杂(与 Ubuntu 或 Debian 相比),我不得不将我的额外配置放在/etc/sudoers.d/ 中的外部文件,而不是直接将其放入 /etc/sudoers
解决方案:
- 将其他配置 直接放入 /etc/sudoers 不会起作用
- 将所需的附加设置放入目录
/etc/sudoers.d
/ 中的文件中即可
例如, 这些是放在名为 /etc/sudoers.d/my_config_file:
的文件中的配置行
Host_Alias MYSERVERHOST=192.168.1.135,localhost
# User that will execute Rsync with Sudo from a remote client
rsyncuser MYSERVERHOST=NOPASSWD:/usr/bin/rsync
为什么 /etc/sudoers
不起作用?即使经过两天的互联网搜索,我也不知道它。我觉得这非常晦涩难懂。
以下是这篇有用文章的引述:https://askubuntu.com/a/931207
与 /etc/sudoers
不同,/etc/sudoers.d 的内容在系统升级后仍然存在,因此最好在那里创建一个文件而不是修改 /etc/sudoers.
要编辑 sudo
使用的任何配置文件,最好使用命令 visudo
。
即
$ sudo visudo -f /etc/sudoers.d/my_config_file
我不是 PAM 专家,但在 Ubuntu 16.04.5 和 20.04.1
上测试了以下解决方案
NOTE : Configuration set to default on /etc/ssh/sshd_config
$ sudo visudo -f /etc/sudoers.d/my_config_file
添加以下行
my_username ALL=(ALL) NOPASSWD:ALL
别忘了重启 sshd
$ sudo systemctl restart sshd
我在自定义 linux 服务器上遇到了类似的问题,但解决方案与上述答案类似。
一旦我从 /etc/sudoers
中删除行 your_user ALL=(ALL) NOPASSWD:ALL
,错误就消失了。
我正面临一个奇怪的行为,试图通过无密码登录的 ssh 运行 rsync 作为 sudo。 这是我对几十台服务器所做的事情,我在连接到几个 Ubuntu 18.04.4 服务器
时遇到了这个令人沮丧的问题前提
使用帐户 USER 从客户端到服务器的无密码 SSH 有效 很好
当我登录 SERVER 时,我可以使用 sudo 一切 帐户 USER
在服务器上,我将以下内容添加到 /etc/sudoers
用户 ALL=NOPASSWD:/usr/bin/rsync
现在,如果我以用户 USER 从机器 CLIENT 启动这个简单测试,我会收到以下 sudo 错误消息:
$ ssh utente@192.168.200.135 -p 2310 sudo rsync
sudo: no tty present and no askpass program specified
此外,查看服务器的 /var/log/auth.log 我发现了这个错误:
sudo: pam_unix(sudo:auth): conversation failed
sudo: pam_unix(sudo:auth): auth could not identify password for [user]
感谢 Centos,我找到了解决方案。事实上,由于 Centos 中 /etc/sudoers 的配置更复杂(与 Ubuntu 或 Debian 相比),我不得不将我的额外配置放在/etc/sudoers.d/ 中的外部文件,而不是直接将其放入 /etc/sudoers
解决方案:
- 将其他配置 直接放入 /etc/sudoers 不会起作用
- 将所需的附加设置放入目录
/etc/sudoers.d
/ 中的文件中即可
例如, 这些是放在名为 /etc/sudoers.d/my_config_file:
的文件中的配置行Host_Alias MYSERVERHOST=192.168.1.135,localhost
# User that will execute Rsync with Sudo from a remote client
rsyncuser MYSERVERHOST=NOPASSWD:/usr/bin/rsync
为什么 /etc/sudoers
不起作用?即使经过两天的互联网搜索,我也不知道它。我觉得这非常晦涩难懂。
以下是这篇有用文章的引述:https://askubuntu.com/a/931207
与 /etc/sudoers
不同,/etc/sudoers.d 的内容在系统升级后仍然存在,因此最好在那里创建一个文件而不是修改 /etc/sudoers.
要编辑 sudo
使用的任何配置文件,最好使用命令 visudo
。
即
$ sudo visudo -f /etc/sudoers.d/my_config_file
我不是 PAM 专家,但在 Ubuntu 16.04.5 和 20.04.1
上测试了以下解决方案NOTE : Configuration set to default on /etc/ssh/sshd_config
$ sudo visudo -f /etc/sudoers.d/my_config_file
添加以下行
my_username ALL=(ALL) NOPASSWD:ALL
别忘了重启 sshd
$ sudo systemctl restart sshd
我在自定义 linux 服务器上遇到了类似的问题,但解决方案与上述答案类似。
一旦我从 /etc/sudoers
中删除行 your_user ALL=(ALL) NOPASSWD:ALL
,错误就消失了。