SOCKS代理到HTTP代理后面的SSH服务器
我在端口9090设置了SOCKS代理到其他地方的计算机B:
ssh -D localhost:9090 user@B
并在我的本地Google Chrome浏览器中进行配置。 但是,计算机B位于HTTP代理后面,因此本地发出的HTTP请求通过SOCKS代理到达计算机B但无法解决(终端运行ssh -D localhost:9090 user @ B显示“open failed:connect failed:No当发出这样的请求时,路由到主机。
我试过了:
- 设置BOTH远程HTTP代理(在计算机B后面)和Google Chrome中的SOCKS代理,
- 运行ssh -D localhost:9090用户@ B,并正确设置环境变量http_proxy,
- 将http_proxy = _proxy_address_添加到计算机B上用户的.bashrc;
但都没有用。
任何人都知道如何配置SOCKS代理,以便考虑计算机B后面的HTTP代理? 任何不涉及在服务器上更改SSHD或全局配置的方法都是首选。
您可以通过SSH“转发”远程网络的代理服务器,而不是使用内置的SOCKS服务器(它只需要另一端的裸网关可寻址网络)。
ssh -L 8080:internal_ip_of_proxy:8080 user@ssh_server
这会在本地公开代理服务器,允许您将浏览器的代理设置设置为localhost:8080
并通过SSH隧道连接到远程代理。
您可以将其应用于任何远程服务。 例如,您可以从服务器中隧道传输Imgur(实际上是单主机代理):
ssh -L 8080:imgur.com:80 user@ssh_host
在本地终端上:
curl --header 'Host: imgur.com' localhost:8080
主机头是必需的,否则curl
将请求不存在的localhost
站点。 你也可以通过在/etc/hosts
添加一行来解决imgur.com
,将imgur.com
解析为127.0.0.1
……但是我正在偏离主题,你不需要任何这些用于你的目的。