我想将一个文件从 A 复制到 D。计算机只能访问其旁边的文件。
+---------------------------------------------------------+
| Computer A <-> Computer B <-> Computer C <-> Computer D |
+---------------------------------------------------------+
现在,我使用 SFTP 将其从 A 复制到 B,然后通过 ssh 进入 B,将其复制到 C,再通过 ssh 进入 C,依此类推。完成后,我返回并关闭每个 ssh 会话并删除文件。
有没有更简便、更高效的方式将文件从 A 发送到 D?目前,文件必须完全下载到该行中的每台计算机,然后才能删除。不,使用软盘和步行并不是更有效率。
答案1
使用 LocalPortForwarding 设置本地端口监听并作为目标 SSH 服务。
+---------------------------------------------------------+
| Computer A <-> Computer B <-> Computer C <-> Computer D |
+---------------------------------------------------------+
在 [ComputerC] 上,在套接字 localhost:2022 上创建一个侦听器,通过将流量转发到 ComputerD:22 来充当 ComputerD 的 SSH
$ ssh -L2022:ComputerD:22 ComputerD
在 [ComputerB] 上,在套接字 localhost:2022 上创建一个侦听器,通过将流量转发到 ComputerC 的 localhost:2022 来充当 ComputerD 的 SSH
$ ssh -L2022:localhost:2022 ComputerC
在 [ComputerA] 上,在套接字 localhost:2022 上创建一个侦听器,通过将流量转发到 ComputerB 的 localhost:2022 来充当 ComputerD 的 SSH
$ ssh -L2022:localhost:2022 ComputerB
使用 ComputerA 上的端口 2022 作为 ComputerD 的 SSH 服务,复制文件
$ scp -P2022 file localhost:/path/