如何在不询问密码的情况下通过SSH启用sudo命令?


13

我有服务器A和服务器B(都是Ubuntu 10.04 LTS)执行不同的任务。服务器A需要戳服务器B,服务器B将生成一个文件,并在完成后通过scp将其返回服务器A。这些都在公司内部,我不太担心安全问题。SSH密钥交换已在服务器A和B之间执行,并且工作正常。

在服务器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:

有任何想法吗?密码输入不能中断此过程。


不能100%确定/etc/sudoers语法,但是我的文件中有line # %wheel ALL=(ALL) NOPASSWD: ALL。也许您的电话应该是jeff ALL=(ALL) NOPASSWD: ALL
snapshoe

整个远程命令不是必须用引号引起来吗?您可能正在服务器A
TheLQ

其实...我认为Snapshoe正在解决问题。我待会再回答我自己的问题……
杰夫(Jeff)

Answers:


16

好像我的/etc/sudoers文件中有“错别字” ...

jeff ALL=NOPASSWD: ALL

是在需要的最末端的文件。Ubuntu帮助在文件的末尾添加(...)(如果不在末尾,则可以由以后的条目使之无效)

之后,无论是在本地还是通过SSH,都永远不会要求密码输入“ jeff的sudo命令”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.