如何使用 rsync 与远程主机

如何使用 rsync 与远程主机

我是一个快乐的用户,rsync -e ssh并使用它来同步我的机器和远程主机之间的数据

rsync -avz -e ssh me@hostA:~/folder ~/folder

这满足了我到目前为止所需要的。

我现在正在使用访问稍微复杂一些的配置。假设 now~/folder已打开hostB,但hostB不能从我的机器直接访问,而只能通过 间接访问hostA

因此,如果我只想查看hostB.我首先需要 ssh 到hostA,然后才能在远程主机上hostB看到我的文件。~/folder

rsync我现在的问题是,在我的机器和 之间直接使用的(最佳)方法是什么hostB

不幸的是,这是我需要使用的配置。假设不可能临时存储数据hostA本身。

答案1

看一下如何使用 ssh 通过另一台电脑连接到另一台电脑

您创建一个~/.ssh/config名为tunnelb的新条目:

Host tunnelb
HostName hostB
User user
ProxyCommand ssh user@hostA nc %h %p

如果您有最新版本的 ssh,Proxycommand ssh user@hostA -W %h:%p则可以使用它。这是首选,因为它不依赖于nc

现在您可以直接使用,rsync -e ssh tunnelb:~/folder ~/folder因为它将使用 中定义的条目~/.ssh/config

答案2

变体 1:

首先,在 hostA 上永久启动 ssh,并在另一个终端中进行本地端口转发。例如:

ssh -N -v -L 22022:hostB:22 hostA

然后,使用 ssh 将 rsync“馈送”至localhost:22022.一种变体是写入 ~/.ssh/config:

Host hostB
HostName localhost
Port 22022

变体 2:

替换-e ssh-e某个包含以下内容的脚本:

ssh hostA 'ssh hostB' "$@"

我没有尝试过,所以一些细节将另外详细说明。

相关内容