麻烦SSH隧道到远程服务器

时间:2012-10-11 17:51:07

标签: linux ssh ssh-tunnel

我正试图从我的本地机器到一个被IP锁定的远程供应商的网站(我们的公司服务器被允许访问)。我通过从可以访问API的服务器进行隧道传输而没有问题,但是,当我设置SSH隧道并转到供应商网站上的URL时,我收到404 Not Found错误。这是我正在使用的:

ssh -f -N user@example.com -L 7777:vendorhostexample.com:80

Everything表示隧道设置正确,但是如果我尝试使用诸如'http:// localhost:7777 / foobar'之类的URL,则会收到404错误。有什么想法吗?

4 个答案:

答案 0 :(得分:3)

您的问题是您正在发送http标头“Location:localhost”,这意味着如果目标网络服务器使用虚拟主机,它将尝试查找网站“localhost”而不是网站“vendorhostexample.com”

一种方法是,Ryan指出要修改你的主机文件并告诉你的机器,它是在127.0.0.1上的vendorhostexample.com,那么当你在浏览器中输入它时,你会通过右边的“主机:通过隧道: “http标头设置。

另一种方法是为浏览器安装扩展程序以更改Firefox this one之类的主机标头。

答案 1 :(得分:2)

其他人已经提到了与错误的虚拟主机匹配的域名问题。另一种解决方案是使用动态隧道。

如果您使用-D 8080标志打开连接,SSH将打开动态隧道,并在端口8080上公开SOCKS代理。如果您将浏览器(或您选择的应用程序)设置为使用在localhost:8080上的SOCKS代理,您可以将所有流量隧道传送到服务器。

答案 2 :(得分:1)

您可以编辑本地主机(/ etc / hosts for linux)文件,并添加如下行:

127.0.0.1 vendorhostexample.com

再试一次。

答案 3 :(得分:-1)

你正在破坏HTTP。您的浏览器在HTTP标头中发送主机名localhost,这意味着您要求提供商网站的localhost网站。他们几乎肯定没有在他们的服务器上使用localhost网站,所以你得到了404。

您无法以您的方式隧道传输HTTP。您需要在公司服务器上设置正确的HTTP代理。