作为 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 方式运行,而无需在 remoteserver 上的 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
来自 localserver 解决了“不存在 tty”错误,但仍然提示我输入 bryan@remotehost 的密码。
谁能解释一下问题是什么?
本地服务器是 Ubuntu 10.04 x64,远程服务器是 Ubuntu 12.04 x64。
你是
sudo
群里的人还是admin
群里的人?从sudoers
手册页:您可以将您的
bryan ALL=(ALL) NOPASSWD: /usr/bin/whoami
行移到底部,这样它就是最后一场比赛。这应该可以防止系统提示您输入密码。