我有服务器 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 命令”的密码。