在这个答案中,我将举一个具体的例子。您只需要用您的计算机替换主机名,用户名和密码。
问题陈述
假设我们具有以下网络拓扑:
our local computer <---> server 1 <---> server 2
为了具体起见,假设我们具有以下计算机的主机名,用户名和密码:
LocalPC <---> hostname: mit.edu <---> hec.edu
username: bob username: john
password: dylan123 password: doe456
目标:我们要设置一个端口侦听SOCKS代理9991的LocalPC,这样每次在连接LocalPC开始从端口 9991它通过mit.edu然后hec.edu。
用例示例:出于安全原因,hec.edu拥有一个只能在http://127.0.0.1:8001上访问的HTTP服务器 。我们希望能够通过打开Web浏览器访问 http://127.0.0.1:8001LocalPC。
组态
在中LocalPC,添加~/.ssh/config:
Host HEC
HostName hec.edu
User john
ProxyCommand ssh bob@mit.edu -W %h:%p
然后在的终端中LocalPC,运行:
ssh -D9991 HEC
它将询问您bobon 的密码mit.edu(即dylan123),然后询问您johnon 的密码hec.edu(即doe456)。
那时,SOCKS代理现在在的端口9991上运行LocalPC。
例如,如果您想LocalPC使用SOCKS代理访问网页,则可以在Firefox中进行:

一些说明:
- 在
~/.ssh/config,HEC是连接名称:您可以将其更改为你想要的任何东西。
- 该
-D9991通知ssh以设立端口SOCKS4代理9991。