Screnario:
[internal_server_1]AA------AB[firewall_1]AC----+ 10.2.0.3-^ ^-10.2.0.2 | internet 10.3.0.3-v v-10.3.0.2 | [internal_server_2]BA------BB[firewall_2]BC----+
Ports AC,BC拥有有效的互联网地址.所有系统都运行linux并具有root权限.
需要安全rsync internal_server_1:/ some / path into internal_server_2:/ another / path
我的想法是在两个防火墙之间建立ssh安全隧道,例如:来自firewall_1
firewall1# ssh -N -p 22 -c 3des user2@firewall_2.example.com -L xxx/10.3.0.3/xxxx
之后将从internal_server_1运行rsync,有点像:
intenal1# rsync -az /some/path user@xxxx.yyyy.com:/another/path
我不知道
>如何为rsync创建正确的ssh隧道(哪些端口需要隧道)
>以及我将在哪里制作rsync? (在ssh隧道的情况下远程comp地址)
对于这种情况有任何想法或指向有用的互联网资源?
感谢名单.
解决方法
我假设firewall_2上的SSH端口(图中的“BC”)可以从外部访问.网络1(10.2.0.*)上的计算机可以直接(即通过NAT)到达互联网,还是仅通过firewall_1进行代理?既然你没有指定,我会假设没有.
可能最简单的事情是通过SSH隧道传输rsync(显然,“最简单”是相对的).首先,在firewall_1上运行它来构建外部隧道:
firewall_1# ssh -N -p 22 -c 3des user2@firewall_2.example.com -L 10.2.0.2:5432:10.3.0.3:22
请注意,这会在任意端口(我使用5432)上运行绑定到其内部IP(10.2.0.2)的隧道的本地(firewall_1)端.
然后,从server_1运行rsync并使用其-e选项通过SSH运行它:
server_1# rsync -e "ssh -N -p5432 -c 3des" -a /local/path server2user@10.2.0.2:/remote/path
此SSH连接到IP地址10.2.0.2上的端口5432,外部隧道转发到10.3.0.3(server_2)端口22(标准SSH).
顺便说一句,如果在多台计算机上协调设置(即从firewall_1创建隧道,然后从server_1使用它)很困难,请告诉我.稍微复杂一点,可以用一个命令从server_1中解决所有问题.虽然您应该能够设置一次外部隧道,然后将其保留下来……