如何通过代理重定向多个服务的特定 URL?

如何通过代理重定向多个服务的特定 URL?

我在 000webhost.com 免费托管了一个网站。我无法直接连接到该网站,因为康卡斯特已封锁了 000webhost 的部分服务器供免费帐户使用,原因是其他人托管了恶意内容。

为了维护我的网站,我无法使用我的电脑直接连接到服务器。我想知道是否有一种方法可以透明地转发通过代理访问服务器的尝试。

我目前使用的系统是 Windows,但我也有运行 Mac OSX 和 Linux 的系统,因此任何系统的解决方案都可以。我找到了适用于 http 的答案,但我正在寻找一种可以让我使用所有其他功能(例如 ftp 和 ssh)的解决方案。

答案1

如果您有一个可以联系的 ssh 服务器,则需要执行两个步骤。

您需要做的第一件事是为您的 ssh 服务器设置无密码(公钥)身份验证。这在如何设置 SSH 以便不需要输入密码?

我将假设 server1 是您的 ssh 服务器,而 server2 是您的被阻止的服务器。

现在要 ssh 到您的第一台服务器,并自动 ssh 到第二台服务器,您可以执行以下操作:

ssh me@server1 'ssh me@server2'

由于您已设置无密码登录到服务器 1,因此将建立 ssh 会话,然后它将执行命令以 ssh 到第二台服务器。从您的角度来看,系统只会提示您输入密码才能登录到服务器 2

要通过 ssh 服务器代理网络连接,你可以使用

ssh -D8080 me@server1

这会在本地端口 8080 上设置一个 socks 代理。对此端口的任何请求都将通过隧道转发,实际的 Web 连接将来自 server1。

要在浏览器中使用此功能,您需要说明要通过代理转发哪些 URL。Firefox 有一个名为 FoxyProxy 的扩展,它可以让您定义应转发到特定代理的特定 URL 或模式。127.0.0.1:8080一旦 ssh 会话开始,socks 代理地址就会出现。

使用 FTP 客户端,您通常可以为每个连接规定一个 SOCKS 代理,这也会指向127.0.0.1:8080

你可以像这样将上面两个结合起来:

ssh -D8080 me@server1 'ssh me@server2'

相关内容