搜索此问题一段时间了,但还没有找到解决方案。
机器 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.