如何正确设置SSH隧道,以便您可以以localhost的身份访问服务器上的站点

为了安全起见,我限制了部分网站访问本地主机。 为了访问他们,我会做这样的ssh隧道-L 8080:localhost:80 [email protected]并设置本地浏览器在我的电脑代理127.0.0.1:8080

那么我猜我缺less的东西,因为没有加载在本地浏览器和terminal在服务器端它说通道3:打开失败:连接失败:连接拒绝每次我试图加载一些东西在本地电脑

在尝试这个时,防火墙closures了

如上所述, ssh -L 8080:localhost:80 [email protected]不会在客户端启动一个魔术代理服务器,它只是将客户端口8080转发到服务器端口80.您需要获取客户端Web浏览器连接到客户端端口8080,正如别人和我自己所说,涉及到指向您的客户端Web浏览器在http://localhost:8080/

您的新问题是,服务器正在运行一些基于名称的虚拟主机,并且当您没有从URL中的服务器请求服务器时,您没有得到正确的主机服务器,这足够合理。

最简单的工作就是告诉你的客户通过名字访问站点,但是让操作系统在浏览器中说明主机parsing的IP地址。 假设您想要通过已经设置的SSH隧道访问主机vsite1.example.comvsite2.example.org ,这两个主机都在服务器端口80上提供服务。

编辑您的客户端 /etc/hosts文件,告诉您的操作系统这些主机名parsing为127.0.0.1 ,条目如

 127.0.0.1 localhost localhost.localdomain vsite1.example.com vsite2.example.org 

我相信Windows有相应的窍门,但我不知道它们是什么,因为我从来没有使用它。

现在你可以将客户端浏览器指向http://vsite1.example.com:8080/ ,客户端操作系统会告诉浏览器在本地主机上,URL将浏览器指向本地主机端口8080,ssh将会执行分包罗莎到服务器端口80,客户端浏览器会向服务器的Web服务器请求正确的虚拟主机。

如果你做端口转发,ssh不会创build代理设置。

所以要么将浏览器直接指向http://localhost:8080要么为“server.com”创build一个指向localhost的主机条目。

如果将浏览器设置更改为在端口8080上使用prox,则ssh portforward必须转发代理端口而不是Web服务器端口。 在server.com上安装squid会给你一个代理服务器。 或者在Apache中设置代理。 代理当然会带来更多的安全问题,所以如果你不是绝对需要的话,最好不要设置一个安全问题。