通常我必须下载一个不能通过第一个 SSH 连接直接访问的文件。例如,我在一台 Windows 机器上,我想访问另一台只能从局域网访问的机器。这意味着我必须首先连接到一台中间机器,然后通过 SSH 连接到下一台。
如果第一台机器可用,那么使用 pscp 获取文件会很容易。在这种情况下可以使用 SSH 端口转发吗?
我添加到.ssh/config
这样的定义:
Host SERVER-A
ProxyCommand ssh SERVER-B nc -q0 %h %p 2> /dev/null
Run Code Online (Sandbox Code Playgroud)
然后只需使用ssh
或scp
以正常方式:
ssh user@SERVER-A
Run Code Online (Sandbox Code Playgroud)
或者
scp file.tar.gz user@SERVER-A:~
Run Code Online (Sandbox Code Playgroud)
在设置与SERVER-A
ssh 库的连接期间会发现这些配置。它告诉 ssh 应该使用一些代理命令来连接。代理命令连接SERVER-B
然后执行nc
命令(netcat),将所有输出从代理命令转发到给定端口的给定服务器,其定义%h
和%p
参数。
这种构造还允许您使用密钥身份验证。您刚刚从两台服务器上的客户端计算机复制了您的 public:SERVER-A
和SERVER-B
.
这种配置也与其他使用 ssh 库的应用程序兼容,例如rsync
,sftp
或 GUI 客户端。
归档时间: |
|
查看次数: |
3676 次 |
最近记录: |