参考:
我如何处理Multihop SCP传输?
https://stackoverflow.com/questions/732039/rsyncing-files-between-two-remote-servers-get-errors-stating-rsync-command-not
http://ubuntuforums.org/showthread.php?t=748431
我有一种情况,我真的希望有一个解决scheme,虽然在过去的几个小时里我什么也没有find。
我有两台服务器无法互相通信,需要在两台服务器之间传输数据。 这是一个相当普遍的情况,很容易通过一些骗局来克服。 这是棘手的问题。
一台服务器通过VPN访问,(vpnserver)另一台服务器(targetserver)通过跳转主机(jumphostserver)访问。
我有ProxyCommand安装程序,允许我通过jumphostserver代理连接到目标服务器,我使用SSH MUX的东西(ControlMaster / ControlPersist / ControlPath)允许连接共享打开的所有连接。
我的本地机器可以使用以下命令正确地在两台服务器之间进行scp操作:
scp -3 vpnserver:/ path / to / file targetserver:/ path / to / destination
我也可以直接从vpnserver rsync的东西到我的本地机器,从我的本地机器到targetserver(使用通过jumphostserver的ssh代理)
我需要做的就是让我的机器作为scp-3允许的方式充当中介,但是使用rsync来这样做,以便将权限,所有权和(更重要的)ACL正确复制到目标服务器。
我想过尝试NFS导出vpnserver和targetserver的文件系统(通过jumphostserver重新导出),但是我不能控制jumphostserver,只能通过vpnserver和targetserver。
如果存在networking连接,则这两台主机中的一台可以login另一台主机,或者使用另一台上的authorized_keys上可识别的SSH ID密钥,或者可以使用密码;如果端口转发没有禁用,则AND通过本地机器运行这个stream量是可以的,那么这几乎总是可以通过端口转发完成的。
我们称之为本地计算机主机A,并且该主机B具有使用SSHlogin到主机C的凭据,只要它能够到达主机C即可。
login到主机B使用该选项进行REVERSE端口转发侦听机器B上的端口2222,并连接到本地主机上的端口3333(这将发生在机器A上)。 在Linux上,这个选项是“ -R 2222:localhost:3333 ”。
使用正常的端口转发,在机器A上监听端口3333,并连接本地主机上的tp端口22(这将发生在机器C上),login到主机C. 在Linux上,这个选项是“ -L 3333:localhost:22 ”。
在主机B上启动一个到主机C的testingSSH会话,看是否一切正常。 要执行的命令是“ ssh -p2222 usernameonhostc @ localhost ”。 如果全部设置正确,它将连接到B端口2222,被转发到A端口3333,然后被转发到C端口22.如果你的密钥是正确的,你可以login。 否则,您应该input密码提示。 input密码确定。
如果可以连接好,请closures该testing连接,然后继续执行下面的#4或#5。
要将文件从B发送到C,请在B上执行以下操作: rsync -e“ssh -p2222”-av / where / to / get / files /。 usernameonhostc @本地:/哪里/到/ PUT /文件
要将文件从C发送到B,请在B上执行此操作:rsync -e“ ssh -p2222”-av usernameonhostc @ localhost:/其中/ to / get / files /。 /在哪里/到/把/文件
如果您需要通过互联网在机器间传输大量数据,因为您的本地访问带宽有限,那么这将会更加复杂,需要了解networking在B和C上的限制情况,甚至是不可能的。
将用户名“useronhostc”replace为您在主机C上使用的用户名。将“localhost”保持原样或仅将其更改为“127.0.0.1”。 为显示的示例提供正确的path。 如果只是单个文件,请删除源path末尾的“ /。 ”。
请记住,您必须同时loginB和C(从A)。 build议单独的xtermminal窗口。 这些sshlogin都将做端口转发。 但是你也可以通过它们来做命令。 您可以select不同的端口号,例如2222或333。 端口22可能是需要的,除非主机C监听不同的端口出于某种原因(我用我的服务器…我不知道什么端口)。 如果您更改端口2222和/或3333,则可能必须使用1024或更高的数字。 从技术上讲,你甚至可以使用相同的数字,因为听是在不同的机器上。
如果两个系统都可以访问Internet,则可以从ntop安装n2n软件包,以在系统之间创build主机到主机的VPN链接。