SSH 本地端口转发到网站

shw*_*eph 6 ssh port-forwarding http ssh-tunnel

今天,我刷新了有关设置 ssh 隧道的记忆,并且遇到了几个描述将某些本地端口转发到网站的资料。例如: https: //www.techrepublic.com/article/how-to-use-local-and-remote-ssh-port-forwarding

\n\n

\xe2\x80\x9c 在客户端上打开一个终端窗口并发出命令:

\n\n

ssh -L 8080:www.slashdot.org:80 本地主机

\n\n

系统将提示您输入客户端计算机的用户密码。本质上,您通过 SSH 连接回客户端计算机,但创建到目的地的必要 SSH 隧道。成功针对本地帐户进行身份验证后,打开浏览器并将其指向http://localhost:8080。您的浏览器应自动将您重定向到 Slashdot.\xe2\x80\x9d

\n\n

只是,如果您实际尝试的话,这将不起作用。我最终遇到了连接失败、500 错误、404 错误等。我尝试过其他网站,甚至非 https。这是什么交易?

\n

小智 6

此技术有效,但不太适合访问网站,因为您需要为每个访问的域转发端口。如果您在 Chrome 中加载slashdot并使用开发人员工具,您可以看到当您加载slashdot时,它实际上正在加载来自至少21个不同域的内容。如果您只转发一个域,那么您将看不到所有内容。

另一个问题是,您正在通过隧道连接到在端口 443 上提供内容的站点上的端口 80。如果您运行“curl -ilashdot.org”,您将看到它为您提供了到 HTTPS 的 301 重定向。当浏览器尝试重定向到 HTTPS 时,一切都会失败。

您最好使用 ssh 作为 SOCKS 代理并配置您的浏览器来使用它。您可以在本地端口上打开袜子代理,如下所示:

ssh -D 8080 myhost.com
Run Code Online (Sandbox Code Playgroud)

在您的情况下,myhost.com 可能是“localhost”,但通常是远程服务器。打开此会话后,只需进入浏览器首选项并将浏览器配置为使用指向本地主机端口 8080 的 SOCKS v5 代理(恕我直言,在 Firefox 中比 chrome 更容易做到)。完成后,浏览器将通过 ssh 隧道运行其所有流量。

这对于访问专用网络上托管的网站或通过您认为不安全的网络加密数据非常有用。