在跳转主机上使用 `sudo` 通过中间主机使用 rsync

在跳转主机上使用 `sudo` 通过中间主机使用 rsync

我是user1@host1,想通过 传输数据rsyncuser3@host3但是,我只能host3通过访问user3@host2。问题是,我只能通过user3或成为,但必须连接到。host2susudohost2user2

因此,为了登录到host3shell,我执行:

user1@host1 $ ssh user2@host2
user2@host2 $ su user3
user3@host2 $ ssh host3
user3@host3 $ # done!

我尝试将所有这些内容封装在一个(单个)调用中,结果rsync如下:

rsync -a -e "ssh -A user2@host2 'sudo -u user3 ssh'" host3:/... /...

不幸的是,requiretty设置/etc/sudoershost2,因此导致出现以下消息:sudo: sorry, you must have a tty to run sudo

我可以添加-tt到 ssh 调用:

rsync -a -e "ssh -tt -A user2@host2 'sudo -u user3 ssh'" host3:/... /...

在这种情况下,我得到:protocol version mismatch -- is your shell clean?。显然,的 TTY 上的某些输出host2导致 rsync 失败。我无法控制该输出或/etc/sudoers

有什么方法可以做到这一点吗,也许使用ProxyCommandSSH 隧道?


使用这个simplescript.sh它的工作原理:

#!/bin/sh
ssh user2@host2 "su user3 -p -c 'ssh $@'"

然后rsync

rsync -av -e './simplescript.sh' pmtlnx009.wob.vw.vwg:/tmp/t19 /tmp/t19

我想那很好;不过,将脚本集成到 CLI 调用中会更好。

相关内容