以 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
行移至底部,以便它是最后一行匹配。这样就不会提示您输入密码了。