我正面临一个奇怪的行为,试图运行rsync作为sudo通过ssh与无密码登录。这是我对数十台服务器所做的事情,我在连接Ubuntu18.04.4服务器时遇到了一个令人沮丧的问题。
前提
用户ALL=NOPASSWD:/usr/bin/rsync
现在,如果我以用户身份从机器客户端启动这个简单的测试,我将收到以下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]
发布于 2020-06-10 13:24:45
多亏Centos,我找到了解决方案。事实上,由于Centos中/etc/sudoers的配置更为复杂(与Ubuntu或Debian相比),我被迫将额外的配置放在/etc/sudoers.d/中的外部文件中,而不是直接放入/etc/sudoers中。
解决办法:
将附加配置直接放入/etc/sudoers 中的
/etc/sudoers.d
/ will work目录中的文件中设置所需的附加设置。
例如,这些配置行放在名为/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
发布于 2020-12-27 13:44:48
am不是PAM专家,但在Ubuntu16.04.5和20.04.1上测试了以下解决方案
备注:配置设置为/etc/ssh/sshd_config上的默认配置
$ sudo visudo -f /etc/sudoers.d/my_config_file
添加以下几行
my_username ALL=(ALL) NOPASSWD:ALL
别忘了重启sshd
$ sudo systemctl restart sshd
发布于 2021-12-29 17:14:55
我在定制linux服务器上遇到了类似的问题,但是解决方案类似于上面的答案。当我从your_user ALL=(ALL) NOPASSWD:ALL
中删除行/etc/sudoers
时,错误就消失了。
https://stackoverflow.com/questions/62299653
复制相似问题