通过 B 上的反向隧道从 A 到 C 进行 Rsync

通过 B 上的反向隧道从 A 到 C 进行 Rsync

搜索此问题一段时间了,但还没有找到解决方案。

机器 C 有一个到机器 B 的持久反向隧道,机器 B 可以通过反向隧道重新连接到机器 C。我可以将文件从 C rsync 到 B,然后使用 A 检索到 B。

如何从 A 到 C 进行 rsync 并检索文件。

我目前可以使用 ssh -A -t HostB "ssh user@localhost -pXXXXX" 从 A 直接连接到 C

谢谢

答案1

我也遇到了同样的问题。解决方案是在启动到机器 B 的机器上使用 ssh 端口转发,在接收的机器上使用 ssh 反向端口。在以下示例中--

deh is user name
export BIP=47.208.123.123 (B's IP address)
22    (A's ssh listening port)
41572 (B's ssh listening port)
22221 (local port on B from reverse ssh of A)
22223 (local port on B from reverse ssh of C)
22    (C's ssh listening port)

机器 A 和 C 与 B 具有持久的反向端口转发连接。例如,设置如下--

ssh -R 22221:localhost:22 deh@$BIP -p 41572
ssh -R 22223:localhost:22 deh@$BIP -p 41572

如果机器 A 想要访问机器 C,则机器 A 设置一个 ssh 正向端口连接到 C 在 B 上设置的反向端口,例如--

ssh -L 22223:localhost:22223 deh@$BIP -p 41572

通过此连接,A 便可以发起与 C 的连接。

在 A 上一步即可获取 C 上的终端--

ssh -p 22223 deh@localhost 

在 A 上将包含文件的目录传输到 C,例如--

rsync -ruav -e 'ssh -p 22223' /home/deh/datafiles deh@localhost:/home/deh

如果希望 C 访问 A,则 C 使用 B 上设置的反向端口 A 建立到 B 的正向端口连接,例如--

ssh -L 22221:localhost:22221 deh@$BIP -p 41572

然后 C 可以通过 ssh、rsync 等一步操作 ssh 到 A。

ssh -p 22221 deh@localhost

答案2

我相信我的解决方案也是相关的。

概要:在两台不直接连接的服务器之间复制文件

变量: 机器 A 无法直接连接到 C,反之亦然。机器 B 可以访问 A 和 C。

图表:A ---->B_SSH-TUNNEL_B--->C

  • A——源机器
  • B——本地机器
  • C - 目的机器

解决方案:

# Map serverB's 5001 port > serverC:22
username@serverB:~$ ssh -L 5001:localhost:22 serverC

# Create a reverse proxy which would link remote serverA:5000 to serverB 5001 
username@serverB:~$ ssh -R 5000:localhost:5001 serverA

# From remote host serverA execute the following command to push file to serverC:
username@serverA:~$ rsync -azvh -e 'ssh -p 5000' /home/username/file1  username@localhost:/home/username/

为了避免密码请求,我们可以通过将-A选项传递给 ssh 命令来转发 SSH 代理

-A Enables forwarding of the authentication agent connection.

相关内容