在只允许SSH的服务器上进行反向代理Web访问

有一段时间,我不得不连接到一个服务器访问受到严格限制。
只有入站SSH是DMZ防火墙允许的。
出站HTTP连接被阻止。

我正在寻找一种简单的方式来通过我的SSH会话来访问Web访问,所以我可以通过yum / apt-get来安装更新和软件。 理想情况下,我想避免在保护区内安装额外的软件/服务。

你在这种情况下做什么?

SSH具有-D <port> SOCKS代理选项。 但不幸的是,这只是从客户端到服务器的单向,没有反向选项。

我终于设法只用SSH来完成这个工作:

  1. 在客户机上启动一个本地SOCKS代理(使用ssh -D
  2. 连接到服务器并设置反向端口转发( ssh -R )到您的本地SOCKS代理
  3. configuration服务器软件以使用转发的代理

1.启动本地袜子代理:

通过SSH连接到本地主机,并在端口54321上打开SOCKS代理。

 $ ssh -f -N -D 54321 localhost 

-f在后台运行SSH。

2.连接服务器并设置反向端口转发

将远程端口6666绑定到本地端口54321.这使得您的本地socks代理可用于端口6666上的远程站点。

 $ ssh root@server -R6666:localhost:54321 

3.configuration服务器软件使用转发的代理

我发现安装proxychains让事情变得更容易。 它是一个使用LD_PRELOAD技巧将来自任意命令的TCP和DNS请求封装到代理中的工具。

这是可选的 – 您也可以configurationyum,apt-get或任何其他软件包pipe理器来使用您的转发的袜子代理。

proxychains非常酷,因为它使任何软件都可以使用SOCKS代理,即使那些没有代理支持的代理。 (例如telnet

设置/etc/proxychains.conf以使用转发的socks代理:

 [ProxyList] # SSH reverse proxy socks5 127.0.0.1 6666 

使用proxychains隧道任意工具(使用TCP):

 $ proxychains telnet google.com 80 $ proxychains yum update $ proxychains apt-get update