使用兼容 OpenBSD 的 nc,把这段主机条目加入 SSH 客户端配置,例如 ~/.ssh/config:

Host work-through-proxy
    HostName ssh.example.com
    User alex
    ProxyCommand nc -X connect -x proxy.example.net:8080 %h %p

对该路由使用 ssh work-through-proxy。辅助程序会请求 HTTP 代理向 ssh.example.com 发起 CONNECT,并把被接受的流转交给 SSH。若让 SSH 直连代理端口,它的握手会被送到期待 HTTP 的服务那里。

替换端点、目标与账号。对于公网可达、且允许公网中介的 SSH 目标,HTTP 代理列表提供了可用来检查能否访问该主机和端口的候选;请选择无需代理账号即可运行所示命令的端点。这些 OpenBSD nc 选项与具体实现相关;另一个名为 nc 的可执行文件未必支持它们。

代理可能要求自己的登录,或拒绝所请求的 SSH 端口。407 针对的正是那次代理交换。隧道建立后,SSH 仍会校验目标主机的身份并认证用户;被拒绝的 SSH 密钥是另一种失败。

把 ProxyCommand 放在预期的 Host 段下,并在需要时使用所选辅助程序支持的代理认证方式。该命令提供的是数据流,不是穿过中介的许可。若只允许 HTTPS 目标,应取得获批的 SSH 访问安排,而不是以为换一种命令写法就能改变策略。

相关文章