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当发出这样的请求时,路由到主机。

我试过了:

  1. 设置BOTH远程HTTP代理(在计算机B后面)和Google Chrome中的SOCKS代理,
  2. 运行ssh -D localhost:9090用户@ B,并正确设置环境变量http_proxy,
  3. 将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 ……但是我正在偏离主题,你不需要任何这些用于你的目的。