【发布时间】:2014-08-01 15:55:45
【问题描述】:
我可以通过ssh -X servA 从local 登录,然后通过ssh -X servB 从servA 登录
要将数据从local复制到servB,我将scp文件从local复制到servA,然后从servA复制到servB。
是否可以将文件从local直接复制到servB,反之亦然?
【问题讨论】:
-
是的,阅读this
我可以通过ssh -X servA 从local 登录,然后通过ssh -X servB 从servA 登录
要将数据从local复制到servB,我将scp文件从local复制到servA,然后从servA复制到servB。
是否可以将文件从local直接复制到servB,反之亦然?
【问题讨论】:
您可以使用 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
【讨论】:
在 ssh 配置文件中使用 ProxyCommand。
【讨论】:
这是我平时做的(我是在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>
注意:这可以在您的本地机器上运行,无需 ssh-ing 到任何 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,但看起来有点直截了当。
只是想在这里提供帮助。
【讨论】: