如何在通过中间服务器连接的本地和远程服务器之间传输数据?

时间:2014-06-11 14:27:23

标签: linux bash shell ssh scp

我可以ssh -X servAlocal登录,然后ssh -X servBservA

登录

要将数据从local复制到servB,我scp个文件从local复制到servA,然后从servA复制到servB }}

将文件从local直接复制到servB是否可行,反之亦然?

3 个答案:

答案 0 :(得分:2)

您可以使用nc(net cat)作为ssh的代理。

因此,对于您的示例,请将~/.ssh/config文件编辑为:

Host servB
ProxyCommand ssh -q servA nc servB 22

只要nc在你的路径中,你现在应该能够ssh或scp目录到servB

如果您没有nc,如果您的版本足够新(> = OpenSSH 5.4),则可以使用ssh -W,

Host ServB
  ProxyCommand ssh -W ServB:22 servA

答案 1 :(得分:0)

在ssh配置文件中使用ProxyCommand

答案 2 :(得分:0)

这就是我通常做的事情(我在Mac机器上做这件事并不知道它是否与Windows机器不同):

与任何servA或servB建立连接后,您可以执行以下操作:

从本地复制到servA或servB:

$ scp -P <port-number used>  <file location to copy from> <username_in servA/servB>@localhost:<file location to copy to>

注意:这可以在本地机器上运行而不需要连接到任何servA / servB,只需要建立连接。

或从servA到servB:

$ scp -P <port-number used>  <username_in servA>@localhost:<file location to copy from> <port-number used> <username_in servB>@localhost:<file location to copy to>

注意:我没有尝试过从服务器到服务器的这个scp,但似乎有点直接。

试着在这里提供帮助。