我目前所做的:

我目前所做的:

以 bryan@localserver 身份登录,我尝试使用 rsync 在远程主机 bryan@remoteserver 上执行备份。

我需要使用 rsync 连接来提升远程主机上的权限--rsync-path='sudo rsync',但是我遇到了问题,因此决定简化问题并首先尝试完成以下工作:

bryan@localserver # ssh bryan@remoteserver 'sudo /usr/bin/whoami'

一旦我解决了这个问题,我就应该能够让 rsync 工作。


我目前所做的:

我已经配置了 ssh,以便 bryan@localserver 可以使用密钥而不是密码通过 ssh 连接到 bryan@remoteserver。

bryan@localserver # ssh bryan@remoteserver
bryan@remoteserver #

我还将 bryan@remoteserver 配置为能够/usr/bin/whoami以 sudo 身份运行,而无需在远程服务器上的 sudoers 文件中输入密码:

bryan   ALL=(ALL) NOPASSWD: /usr/bin/whoami

这很好用:

bryan@remotehost # sudo whoami
root

但从本地服务器来看:

bryan@localhost # ssh bryan@remoteserver 'sudo /usr/bin/whoami'
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: 3 incorrect password attempts

我的完整 sudoers 文件(减去注释和空白行)如下:

Defaults env_reset
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults !requiretty
root    ALL=(ALL:ALL) ALL
bryan   ALL=(ALL) NOPASSWD: /usr/bin/whoami
%admin  ALL=(ALL) ALL
%sudo   ALL=(ALL:ALL) ALL

ssh -t从本地服务器解决了“没有 tty 存在”错误,但仍然提示我输入 bryan@remotehost 的密码。

谁能解释一下这是什么问题?

本地服务器是 Ubuntu 10.04 x64,远程服务器是 Ubuntu 12.04 x64。

答案1

sudo您是该团体或小组的成员吗admin? 来自sudoers手册页:

当多个条目与用户匹配时,将按顺序应用它们。如果有多个匹配项,则使用最后一个匹配项(不一定是最具体的匹配项)。

您可以将bryan ALL=(ALL) NOPASSWD: /usr/bin/whoami行移至底部,以便它是最后一行匹配。这样就不会提示您输入密码了。

相关内容