作为bryan @ localserverlogin,我试图在远程主机bryan @ remoteserver上使用rsync进行备份。
我需要使用rsync连接来提升远程主机上的权限--rsync-path='sudo rsync' ,但是我遇到了问题,所以决定简化问题,试着首先得到以下结果:
bryan@localserver # ssh bryan@remoteserver 'sudo /usr/bin/whoami'
有一次,我已经破解了这个,我应该可以让rsync工作。
我已经configuration了ssh以便bryan @ localserver可以使用密钥而不是密码ssh到bryan @ remoteserver。
bryan@localserver # ssh bryan@remoteserver bryan@remoteserver #
我还configuration了bryan @ remoteserver,以便能够在远程服务器的sudoers文件中运行/usr/bin/whoami作为sudo,而没有密码:
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的密码。
任何人都可以请解释是什么问题?
localserver是Ubuntu 10.04 x64,remoteserver是Ubuntu 12.04 x64。
你是sudo组或admin组的成员吗? 从sudoers手册页:
当多个条目匹配用户时,它们按顺序应用。 如果有多个匹配,则使用最后的匹配(不一定是最具体的匹配)。
您可以将您的bryan ALL=(ALL) NOPASSWD: /usr/bin/whoami行移动到最下面,这是最后一次匹配。 这应该让你不被提示input密码。