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

Jef*_*eff 16 linux ssh sudo ubuntu

我有服务器 A 和服务器 B(都是 Ubuntu 10.04 LTS)执行不同的任务。服务器 A 需要戳服务器 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
Run Code Online (Sandbox Code Playgroud)

同样在服务器 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:
Run Code Online (Sandbox Code Playgroud)

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

Jef*_*eff 19

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

jeff ALL=NOPASSWD: ALL

是在需要的最末端的文件。Ubuntu 帮助只说Add (...) to the END to the file (如果不是在最后,它可以被后面的条目取消)

之后,无论是在本地还是通过 SSH,“jeff 的 sudo 命令”都不再需要密码。