从默认 SOCKS 路由中排除一台 SSH 主机
在通配默认规则之前放置 ProxyCommand none 例外,并检查目标主机实际生效的 OpenSSH 配置。
当 OpenSSH 配置默认使用 SOCKS 连接器时,把具名例外放在那条宽泛规则之前:
Host internal.example
ProxyCommand none
Host *
ProxyCommand nc -X 5 -x proxy.example:1080 %h %p
这个例子使用OpenBSD nc 的 SOCKS5 选项接口。用 ssh internal.example 连接会选中该例外;其余主机则获得默认连接器。对于允许的公共 SSH 目的地,SOCKS5 代理列表中无需账号的条目可以提供默认代理地址,前提是它允许每个实际主机和 SSH 端口;保留原本设想的内部例外。
顺序很重要,因为 OpenSSH 对某个参数采用最先取得的值。例外必须在匹配的默认值提供 ProxyCommand 之前出现,包括通过 Include 文件读入的默认值。
用下面的命令检查某次调用的实际设置:
ssh -G internal.example
主机模式匹配的是调用 SSH 时使用的名称。如果某条命令使用别名,而该别名的 HostName 指向 internal.example,也要给这个别名同样的例外。这样规则就绑定在真实的配置查找上,而不是假定 DNS 上等价的名称会选中同一个配置块。