HTTP 的 SSH 隧道:目标 HTTP 代理端口是否必须公开?

HTTP 的 SSH 隧道:目标 HTTP 代理端口是否必须公开?

一个例子:

我正在尝试使用 PuTTy 创建从我的笔记本电脑到我的服务器的 SSH 隧道(出于此示例的目的,MyServer.com:22)。MyServer.com 和 Internet 之间的路由器上启用了端口 22。

MyServer.com 在默认端口 8118 上运行 Privoxy HTTP 代理。路由器上未启用端口 8118。

当我从笔记本电脑上的本地端口(例如 3500)创建到 MyServer.com:22 的隧道,然后将我的 Web 浏览器配置为使用 localhost:3500 作为代理时,我的 Web 浏览器中并没有出现网页 - 相反,我从 Open SSH 中获得了一行文本,描述了 Web 浏览器中软件的版本号。

我在 sshd_config OpenSSH 文件中看到过(但并未完全理解)对 SOCKS 和 ProxyCommand 关键字的引用。我是否能够利用其中一个/两个来创建到 MyServer.com:22 的隧道以提供网页服务,或者 MyServer.com:8118 上的 HTTP 代理是否绝对有必要暴露给互联网?

答案1

这是因为您使用了本地端口转发技术:

$ ssh -L 3500:yourserver.com:22 [email protected]

此命令分配一个套接字来监听笔记本电脑上的端口 3500。当您将浏览器配置为用作localhost:3500代理时,Web 流量将通过安全通道转发,并连接到yourserver.com:22,实际上,您正在telnet连接到您的服务器,这就是您获得 SSH 版本的原因:

SSH-2.0-OpenSSH_4.3
Protocol mismatch.

您可能想使用动态端口转发:

$ ssh -D 3500 [email protected]

该技术使用应用程序协议来确定从您的服务器连接到哪里。

不要忘记配置 Web 浏览器以使用 SOCKS Host,不是HTTP 代理。

相关内容