无法SSH隧道到远程服务器

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

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

一切都表明隧道设置正确,但如果我尝试一个URL,如“http:// localhost:7777 / foobar”,我得到了404错误。 有任何想法吗?

Solutions Collecting From Web of "无法SSH隧道到远程服务器"

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

一种方法是Ryan指出要修改你的主机文件,告诉你的机器vendorhostexample.com在127.0.0.1上,这样当你在浏览器中输入时,你将通过右边的“Host:”http头组。

另一种方式是为浏览器安装一个扩展,以便像firefox一样更改Host头。

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

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

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

 127.0.0.1 vendorhostexample.com 

然后再试一次。

你用这个打破了HTTP。 您的浏览器正在HTTP头中发送主机名localhost ,这意味着您要求供应商网站的localhost网站。 他们几乎肯定不会在他们的服务器上托管一个localhost站点,所以你得到了404。

你不能以你的方式隧道HTTP。 您需要在公司服务器上设置正确的HTTP代理。