Pet*_*ter 46 sudo rsync ubuntu
我想将我机器上的文件夹与远程机器上的文件夹同步。远程文件夹只能由root. 我在远程机器上有一个帐户,可以使用sudo. 如何运行 rsync 使其在远程计算机上具有 root 权限?
我尝试了以下方法:
rsync -avz -e ssh /home/ubuntu/my/lovely/folder ubuntu@x.x.x.x:/remote/lovely/folder --delete --rsync-path="sudo rsync"
Run Code Online (Sandbox Code Playgroud)
但是(输入密码后)出现以下错误:
sudo: no tty present and no askpass program specified
Run Code Online (Sandbox Code Playgroud)
小智 27
试试这个解决方案。在您的 sudoers 文件 ( /etc/sudoers) 中,像这样设置您的用户:
username ALL= NOPASSWD:/usr/bin/rsync
Run Code Online (Sandbox Code Playgroud)
该NOPASSWD:/usr/bin/rsync通知sudo,当你的用户运行/usr/bin/rsync或仅rsync是不需要密码。
那么你的原件--rsync-path="sudo rsync"应该可以工作。
Pet*_*ter 13
这是我想出的解决方案:
rsync -R -avz -e ssh --rsync-path="echo mypassword | sudo -S mkdir -p /remote/lovely/folder && sudo rsync" /home/ubuntu/my/lovely/folder ubuntu@x.x.x.x:/remote/lovely/folder --delete
Run Code Online (Sandbox Code Playgroud)
有点任务!
And*_*rew 10
这个博客上的解决方案对我来说非常有效:http : //www.pplux.com/2009/02/07/rsync-root-and-sudo/。
基本上:
stty -echo; ssh myUser@REMOTE_SERVER "sudo -v"; stty echo
rsync -avze ssh --rsync-path='sudo rsync' myUser@REMOTE_SERVER:/REMOTE_PATH/ LOCAL_PATH
Run Code Online (Sandbox Code Playgroud)
第一行允许交互式密码输入,而不在屏幕上显示密码。在 Ubuntu 9.04 上非常适合我。
小智 6
在远程机器上
sudo apt install ssh-askpass
which ssh-askpass
Run Code Online (Sandbox Code Playgroud)
然后在本地机器上
rsync -av -e 'ssh -X' --rsync-path='SUDO_ASKPASS=/usr/libexec/openssh/ssh-askpass sudo -A rsync' /some/local/path user@remote:/some/remote/path
Run Code Online (Sandbox Code Playgroud)
将 ssh-askpass 的路径替换为远程计算机上的实际路径
来源:http://unix.bris.ac.uk/2015/08/04/rsync- Between-two-hosts-using-sudo-and-a-password-prompt/
我对现有答案的复杂性感到惊讶!这是迄今为止容易和方便地配置系统(PC和远程主机),这样就可以以root身份连接到远程主机,而无需使用密码。虽然听起来很可怕,但它非常安全。
只是不要忘记,只要远程主机的 /root/.ssh/authorized_keys 中的行在那里,机器就可以接受来自您 PC 的 root 命令。
| 归档时间: |
|
| 查看次数: |
66191 次 |
| 最近记录: |