Linux SSH隧道将数据从一个数据中心从中间机器传输到另一个数据中心

Linux SSH隧道将数据从一个数据中心从中间机器传输到另一个数据中心,linux,unix,ssh,rsync,ssh-tunnel,Linux,Unix,Ssh,Rsync,Ssh Tunnel,如何为下面的场景创建SSH隧道 我有三台机器 A. Data Center A VM. B. Machine at work (middle man). C. Data Center C VM. 所以我可以从B->A和B->C进行SSH,但不能从A->C和C->A进行SSH 有没有办法设置一个SSH隧道,这样我就可以使用机器B将数据从AData Center a传输到C数据中心C。 我想使用rsync传输数据,请在隧道挖掘后告诉我如何使用rsync 在上面提到的回复中,他们可以从a->B->C

如何为下面的场景创建SSH隧道

我有三台机器

A. Data Center A VM.
B. Machine at work (middle man).
C. Data Center C VM.
所以我可以从B->A和B->C进行SSH,但不能从A->C和C->A进行SSH

有没有办法设置一个SSH隧道,这样我就可以使用机器B将数据从AData Center a传输到C数据中心C。 我想使用rsync传输数据,请在隧道挖掘后告诉我如何使用rsync

在上面提到的回复中,他们可以从a->B->C访问。这是可能的。在我的问题中,我有一个从B->a和B->C的访问权限,我想从a->C复制数据,如前所述

请尝试-3选项,如下所示:

scp -3 user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt

-3选项指示scp通过发出命令的PC路由流量,即使它是传输的第三方。通过这种方式,授权凭据必须仅驻留在发行PC(第三方)上。

我找到了解决方案,下面是详细信息

解决方案分为两部分:

下面的命令将在源和源之间创建一个隧道 目标计算机。要调试连接,请将其分成两部分 部件和添加详细状态:

在中间机器上运行此命令[B.工作中的机器中间人]

$ssh-v-R 50000:数据中心C虚拟机的Ip地址:数据中心A虚拟机的22 Ip地址 示例:ssh-v-r50000:192.168.1.25:22192.168.1.36

注意:要实现这一点,您需要在两个远程主机[数据中心A VM源和数据中心C VM目标]之间正确设置ssh密钥,源计算机上使用私钥,目标计算机上使用公钥

如果第一个解决方案有效,那么您将获得对源代码的shell访问 机器数据中心是一个虚拟机。现在从数据中尝试rsync命令 将虚拟机置于中心

建议在不同的终端中执行此操作,因此 详细的ssh信息不会与rsync混合在一起 状态信息

$rsync-e ssh-p 50000-vuar/opt/source\u path localhost:/opt/destination\u path


从machine2-B中间商处使用以下命令:

ssh user@machine-A "tar cpvf - filename | ssh user@machine-C "tar xpf - -C /destination" 

@JohnC问题的可能重复项不重复。他们可以从a->B->C访问。这是可能的。在我的问题中,我有一个从B->a和B->C的访问权限,我想从a->CSo复制数据,只需使用scp a:/path/file C:/path/file?我尝试了这个sshroot@xxx.xxx.xxx.xx1rsync-rsync path=/opt/rsync/bin/rsync-rvpogtlH ssh/data/VGRroot@xxx.xxx.xxx.xx2:/shared/但似乎不起作用,由于一台服务器上的rsync注入路径不同,因此stack Overflow是一个解决编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许或者会是一个更好的提问的地方。另请参阅感谢回复,我想复制巨大的目录并使用rsync,这里scp对我不起作用。一旦scp起作用,你应该能够使用rsync,没有问题。不过先用scp进行测试。我尝试了这个解决方案,但在我的旧操作系统中,主机密钥验证失败scp-3选项不可用。我想它有更新的版本。