![如何通过 SSH 启用 sudo 命令而不询问密码?](https://linux22.com/image/1363744/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%20SSH%20%E5%90%AF%E7%94%A8%20sudo%20%E5%91%BD%E4%BB%A4%E8%80%8C%E4%B8%8D%E8%AF%A2%E9%97%AE%E5%AF%86%E7%A0%81%EF%BC%9F.png)
我有服务器 A 和服务器 B(均为 Ubuntu 10.04 LTS),它们执行不同的任务。服务器 A 需要向服务器 B 发送消息,服务器 B 会生成一个文件,完成后再通过 scp 将其发送回服务器 A。这一切都在内部完成,我并不太担心安全问题。服务器 A 和 B 之间已经执行了 SSH 密钥交换,并且运行正常。
在服务器 B 上,脚本generateOfflineSig
如下所示
#!/bin/bash
echo "in script"
sudo apt-offline set offline_package.sig --install-packages "$0"
echo "after sudo"
scp offline_package.sig jeff@servera:/tmp
此外,在服务器 B 上,visudo 有以下条目:
jeff ALL=NOPASSWD: ALL
如果我sudo ls
在服务器 B 上执行,则不会询问密码。
不幸的是,SSH 总是要求在服务器 A 上输入密码:
jeff@servera:~$ ssh -t jeff@serverb /home/jeff/generateOfflineSig "incron"
in script
[sudo] password for jeff:
有什么想法吗?此过程不能通过输入密码来中断。
答案1
看来我的/etc/sudoers
文件中有一个“拼写错误”......
jeff ALL=NOPASSWD: ALL
需要在最后的文件。Ubuntu 帮助只说将 (...) 添加到文件末尾(如果不在末尾,则可以被后面的条目取消)
此后,无论是本地还是通过 SSH,都不再要求输入“jeff 的 sudo 命令”的密码。