为 Windows OpenSSH 指定明确的 SOCKS5 Ncat 命令
将 Ncat 用作 OpenSSH 的标准流传输辅助程序,并显式指定 SOCKS5,而不是依赖其默认的 HTTP 代理。
如果 Windows OpenSSH 已经可以使用 Ncat,就可以通过 SOCKS5 代理提供连接。在该 OpenSSH 客户端使用的 SSH 配置中添加主机条目:
Host target-via-socks
HostName ssh.example
User user
ProxyCommand ncat.exe --proxy-type socks5 --proxy proxy.example:1080 %h %p
替换两个主机名和账户,然后用 ssh target-via-socks 连接。本示例假设 ncat.exe 位于该辅助程序的可执行文件搜索路径中。否则请使用正确加引号的完整可执行文件路径,尤其是目录包含空格时。
代理端点放在 --proxy 之后。OpenSSH 会把 %h 和 %p 展开为最终的 SSH 主机名和端口。Ncat 协商 SOCKS 连接,并在标准输入和输出上承载得到的字节流;OpenSSH 在该流上继续 SSH 握手。
显式指定 --proxy-type socks5 很重要。缺少该选项时,Ncat 默认使用 HTTP 代理,即使所给端口是 1080。SOCKS 监听方无法推断 HTTP CONNECT 请求原本是要走 SOCKS。
本示例假设 SOCKS 端点不需要认证;仅当公共 SSH 目标允许该路径时,才从 SOCKS5 代理列表中选择候选,并检查能否访问其实际主机和端口。代理认证(如需要)与之后的 SSH 登录是分开的。请保留对 SSH 目标主机密钥的验证;通过辅助程序到达目标不会改变 OpenSSH 应当认证的身份。