通过 serverB 将文件从 serverC 同步到 serverA

通过 serverB 将文件从 serverC 同步到 serverA

我有计算机 A、B 和 C。每台计算机都启用了 ssh,我可以使用rsync.

  • A 可以 ssh 到 B
  • B 可以 ssh 到 C
  • A 无法 ssh 到 C

B 具有公共 ssh 访问权限,因此 A 可以连接 B,而 C 可以进行通信,因为它们位于 VPN 中,而 A 不属于该 VPN。

我想将一些文件(并为此创建一个 cronjob)从 C 复制到 A。

有什么好的方法可以做到这一点?

更新:

我能够通过 B ssh 到 C,正如您建议我的相关答案中所解释的那样,但我无法rsync通过 serverB 。

假设 B 正在监听 ssh,而不是在端口 22 上。

答案1

这对我有用:

rsync -avzhP -e "ssh -p portB -A user1@serverB ssh" user2@serverC:somedir/ localdir/

作为参考,我阅读了类似问题的答案:

https://stackoverflow.com/a/21787966/399637

答案2

如果主机 A 可以ssh连接到主机 B,并且主机 B 可以ssh连接到主机 C,则您可以在主机 A 上设置ssh客户端配置,以通过 B 代理到 C。您还可以指定rsync使用ssh作为其传输协议 ( -e ssh)。将这两件事结合起来,你就可以ssh通过rsyncB 的方式从主机 A 到 C,即使是在一个cron工作中。

答案3

当服务器 A、B 和 C 没有 22 以外的端口时,我使用了此命令

rsync -azv -e 'ssh -A -J  UserServerB@AddressB' /file-in-ServerA UserServerC@AddresServerC:/path-ServerC

但是如果服务器B使用22以外的s端口通过ssh连接

rsync -azv -e 'ssh -A -J  UserServerB@AddressB:PortB' /file-in-ServerA UserServerC@AddresServerC:/path-ServerC

相关内容