HTTP隧道:目标HTTP代理端口是否必须公开?

一个例子:

我正在尝试使用PuTTy从我的笔记本电脑创build一条SSH隧道到我的服务器(本例MyServer.com:22)。 在MyServer.com和Internet之间的路由器上启用端口22。

MyServer.com在默认端口8118上运行Privoxy HTTP代理。路由器上未启用端口8118。

当我从我的笔记本电脑的本地端口创build一条隧道(如3500)到MyServer.com:22,然后将我的Web浏览器configuration为使用localhost:3500作为代理服务器时,我的Web浏览器中不显示网页 – 相反,我从Open SSH获得一行描述Web浏览器中软件版本号的文本。

我在sshd_config OpenSSH文件中看到了(并且没有完全理解)对SOCKS和ProxyCommand关键字的引用。 我能够利用其中一个/这两个为了创build隧道MyServer.com:22服务的网页,或者是绝对必要的MyServer.com:8188上的HTTP代理服务器暴露在互联网?

这是因为您使用本地端口转发技术:

$ ssh -L 3500:yourserver.com:22 [email protected] 

这个命令分配一个套接字来侦听笔记本电脑上的3500端口。 当您将浏览器configuration为使用localhost:3500作为代理时,Webstream量将通过安全通道进行转发,并与yourserver.com:22进行连接,实际上,您将通过telnet访问您的服务器,这就是为什么你得到SSH版本:

 SSH-2.0-OpenSSH_4.3 Protocol mismatch. 

您可能想要使用dynamic端口转发:

 $ ssh -D 3500 [email protected] 

此技术使用应用程序协议来确定从服务器连接的位置。

不要忘记configurationWeb浏览器使用SOCKS主机, 而不是 HTTP代理。