shell 扩展或程序将数据从远程计算机传输到本地计算机,反之亦然

shell 扩展或程序将数据从远程计算机传输到本地计算机,反之亦然

我有本地机器 (L) 和远程机器 (R),只能通过跳过 (A)、(B) 才能到达。

为了传输文件,我的正常例程如下所示:

l@L$ ssh -t a@A ssh -t b@B ssh r@R
r@R$ # do some stuff till I find out I want to copy file x to L

然后我打开一个新终端

l@L ssh a@A
a@A ssh b@B
b@B scp r@R:PATH_TO_FILE a@A:TEMP
b@B <ctrl-D> to close
a@A scp TEMP r@R l@L:FINAL_DESTINATION

以及scp我所有跃点的文件。

我想知道是否有一个 shell 扩展或程序允许直接从 R 复制文件。类似于通过管道 stdout@R 到 stdin@L 来捕获它。它不必非常高效。由于大多数时候我的文件都很小(<100kB),但它需要支持二进制。

答案1

您可能需要查看sshProxyCommand配置,它可以使工作更加无缝,并且适用于 shell、SFTP、隧道以及您可能希望通过 ssh 代理的任何其他内容。

假设您有以下三个主机:

  • workstation.example.com- 这是您正在操作的机器
  • proxy.example.com- 这是您路由 SSH 流量的机器
  • endpoint.example.com- 这是您希望流量最终到达的地方

~/.ssh/configon 中workstation,添加以下内容:

Host endpoint
    User WorkstationUser # set this to the username on the workstation host
    HostName endpoint.example.com
    ProxyCommand ssh [email protected] nc %h %p 2> /dev/null

proxy主机上,确保nc已安装 (netcat)。

然后,在 上workstation,您可以ssh endpointsftp endpoint并且您将通过代理主机透明地代理到该计算机。

相关内容