![Linux中SSH客户端通过代理连接主机](https://linux22.com/image/30142/Linux%E4%B8%ADSSH%E5%AE%A2%E6%88%B7%E7%AB%AF%E9%80%9A%E8%BF%87%E4%BB%A3%E7%90%86%E8%BF%9E%E6%8E%A5%E4%B8%BB%E6%9C%BA.png)
我真的很挣扎。
我的主机 (A) 位于代理/防火墙 (PF) 后面,需要连接到主机 H。
代理已配置 HTTP/FTP/SOCK 代理,并且我在 Web 浏览器、wget 等中配置没有问题。
但是当我使用...
ssh H //to connect my host
我没有成功通过代理。它似乎尝试直接连接而不是通过 PF。
我使用的是 Ubuntu 12.10。
答案1
ssh
没有本机SOCKS
客户端支持,您需要使用 aProxyCommand
来实现,例如socat
:
ssh -o ProxyCommand='socat - SOCKS4A:myproxy:%h:%p,socksuser=nobody' user@host
或者使用诸如tsocks
或dante
之类的东西socksify
来透明地使用 SOCKS 来传输 TCP 流量。
对于 SOCKS5 为socat
2:
ssh -o ProxyCommand='socat - "SOCKS5:%h:%p|tcp:myproxy:1080"' user@host
对于带有 2 的 HTTP 代理CONNECT
方法socat
:
ssh -o ProxyCommand='socat - "PROXY:%h:%p|tcp:myproxy:80"' user@host
答案2
答案3
对于 HTTP 代理 CONNECT 方法socat
,
代理命令:socat - PROXY:myproxy:%h:%p,proxyport=myproxyport