让 SSH 使用你已有的 SOCKS 代理
通过兼容的 ProxyCommand 助手,把现有的 SOCKS 代理用作 SSH 连接的传输通道。
ssh -D 会创建一个 SOCKS 监听,但并不会为 SSH 自身的连接挑选现有的代理。使用 OpenBSD 版 nc 时,在 SSH 客户端配置里写一个 host 条目,例如 ~/.ssh/config:
Host server-via-socks
HostName ssh.example.com
User alex
ProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p
调用 ssh server-via-socks。助手会连接 SSH 客户端本机上的 SOCKS5 服务,并请求目标主机/端口。随后 SSH 在流内完成常规的主机密钥校验和用户登录。
在输入代理密码之前,先确认助手是否支持。OpenBSD nc 记录的是 HTTP CONNECT 的代理认证,而不是 SOCKS 认证。受凭据保护的 SOCKS 服务可能需要另一个兼容的助手。请保留共享代理的认证,而不是为了迁就不受支持的客户端而删掉它。
目的地看到的是代理向外的连接,而 SSH 校验仍然识别真正的服务器。连不上它的端口发生在 SSH 登录之前;隧道被接受之后密钥被拒绝,则属于 SSH 凭据的问题。
该设置只适用于这条 SSH 连接。它不会配置浏览器流量或其他任何应用。