我有计算机 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/
作为参考,我阅读了类似问题的答案:
答案2
如果主机 A 可以ssh
连接到主机 B,并且主机 B 可以ssh
连接到主机 C,则您可以在主机 A 上设置ssh
客户端配置,以通过 B 代理到 C。您还可以指定rsync
使用ssh
作为其传输协议 ( -e ssh
)。将这两件事结合起来,你就可以ssh
通过rsync
B 的方式从主机 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