我正试图从我的本地机器到一个被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错误。有什么想法吗?
答案 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代理。