常见的多 SSH 连接文件处理问题

Uku*_*kit 3 ssh ssh-tunneling

通常我必须下载一个不能通过第一个 SSH 连接直接访问的文件。例如,我在一台 Windows 机器上,我想访问另一台只能从局域网访问的机器。这意味着我必须首先连接到一台中间机器,然后通过 SSH 连接到下一台。

如果第一台机器可用,那么使用 pscp 获取文件会很容易。在这种情况下可以使用 SSH 端口转发吗?

Luk*_*ach 5

我添加到.ssh/config这样的定义:

Host SERVER-A
    ProxyCommand ssh SERVER-B nc -q0 %h %p 2> /dev/null
Run Code Online (Sandbox Code Playgroud)

然后只需使用sshscp以正常方式:

ssh user@SERVER-A
Run Code Online (Sandbox Code Playgroud)

或者

scp file.tar.gz user@SERVER-A:~
Run Code Online (Sandbox Code Playgroud)

在设置与SERVER-Assh 库的连接期间会发现这些配置。它告诉 ssh 应该使用一些代理命令来连接。代理命令连接SERVER-B然后执行nc命令(netcat),将所有输出从代理命令转发到给定端口的给定服务器,其定义%h%p参数。

这种构造还允许您使用密钥身份验证。您刚刚从两台服务器上的客户端计算机复制了您的 public:SERVER-ASERVER-B.

这种配置也与其他使用 ssh 库的应用程序兼容,例如rsyncsftp或 GUI 客户端。