SSH 隧道将数据从一个数据中心传输到另一个数据中心

SSH tunneling to transfer the data from one data center to another from middle machine

如何为以下场景创建 SSH 隧道。

我有3台机器..

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 隧道,以便我可以使用机器 B 将数据从 A(数据中心 A)传输到 C(数据中心 C)。 我想使用rsync来传输数据,隧道后请告诉我如何使用rsync?

在提到的回复中,他们可以从 A->B->C 进行访问。可以使用它。在我的问题中,我可以从 B->A 和 B->C 进行访问,我想从 A->C

复制数据

如讨论的那样here

试试-3选项,如下:

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

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

我找到了解决方案,这里是详细信息

解决方案分为两部分:

  1. 以下命令将在源和 目标机。要调试连接,请将其分成两部分 部分并添加详细状态:

    运行中间机器上的这个命令[B.工作中的机器(中间人)]

    $ ssh -v -R 50000:(数据中心C虚拟机的IP地址):22(数据中心A虚拟机的IP地址) 示例:ssh -v -R 50000:192.168.1.25:22 192.168.1.36

注意:要实现此功能,您需要在两个远程主机之间正确设置 ssh 密钥 [数据中心 A 虚拟机(源)和数据中心 C 虚拟机(目标) )],使用源机器上的私钥和目标机器上的 public 密钥。

  1. 如果第一个解决方案有效,那么您将获得对 Source 的 shell 访问权限 机(数据中心 A 虚拟机)。现在从 Data 尝试 rsync 命令 中心虚拟机。

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

    $ rsync -e "ssh -p 50000" -vuar /opt/source_path localhost:/opt/destination_path

从 machine2-B(中间人)使用此命令:

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