通过 ssh 隧道进行 rsync

Vai*_*los 5 ssh ssh-tunneling rsync

----------         /|                      /|             ------------
|  Home  |        | |                     | |             |    Work   |
|        |--------| |---------------------| |-------------|           |
|ssh-serv|   Firewall:Port-22=open     Firewall           |           |
----------        | |                     | |             ------------
                  |/                      |/
Run Code Online (Sandbox Code Playgroud)

这是上图的场景:

工人可以访问他的 Work 机器,并且还设置了一个 Home ssh 服务器。工人想从他的 PC@Home 访问他的 Work 机器,但公司的政策限制通过 Firewall@Work 访问,但允许他通过反向 ssh 隧道连接。所以工人从他的工作站@Work 发出以下命令:

ssh -fN -R 19999:localhost:22 Home-user@Home
Run Code Online (Sandbox Code Playgroud)

现在,他可以从他的 PC@Home 发出以下命令并连接到他的工作站@Work 的 ssh 服务器:

ssh -v Work-user@localhost -p 19999
Run Code Online (Sandbox Code Playgroud)

工作人员是否可以使用 rsync 使用现有隧道将目录从他的 PC@Home 复制到他的工作站@Work?

slm*_*slm 6

我认为您正在寻找的功能称为连接共享。将此添加到您的$HOME/.ssh/config文件中:

ControlMaster auto
ControlPath /tmp/ssh_mux_%h_%p_%r
Run Code Online (Sandbox Code Playgroud)

摘自SSH 的#1可以做到吗?使用远程服务器的生产力提示

幸运的是,OpenSSH 有一项功能,可以让您更轻松地在已连接的服务器上获取另一个终端:连接共享。

摘录#2

共享连接不仅仅是具有多个终端窗口的好处;它们还使向远程服务器复制文件和从远程服务器复制文件变得轻而易举。如果您通过 SSH 连接到服务器,然后使用 scp 命令将文件复制到服务器,scp 将使用您现有的 SSH 连接?... 连接也与 rsync、git 和任何其他使用 SSH 进行连接的命令共享。

参考