使用 SSH 隧道浏览网页

使用 SSH 隧道浏览网页

设置:

  • 具有完全管理权限的 Windows 工作站。
  • 然而,一个非常严格的 http 代理,它只接受端口 80 和端口 443 的连接。
  • 我完全控制着互联网上的一个 Linux 机器。

目前,我正在做的事情是:

  • Linux 机器运行 sshd,监听 443 端口。
  • 在 putty 中,我只需在代理配置面板中将代理配置为 HTTP 代理即可连接到 Linux 机器。

我想要实现的目标:

在我的 Windows 机器上运行浏览器,通过使用某种 ssh 隧道,可以无限制地浏览网页。

我认为这叫做代理反弹,或类似的东西。但我必须承认,我有点迷茫了。

据我所知,我必须配置一个进入 Putty 的隧道,例如在 Windows 机器上监听端口 8889。然后,我可以配置浏览器以使用位于 localhost:8889 的代理

现在正是事物变得模糊的时刻。

在 Linux 机器上,我必须在 SSH 配置文件中配置 ProxyCommand 或类似的东西来执行端口转发?此外,我是否必须在 Linux 机器上运行像 squid 这样的代理?我是否有某种教程成立描述 Apache 的设置:

或者我完全走错了方向,我必须在 Windows 和 Linux 机器上运行 ProxyTunnel 吗?

感谢您的帮助。

编辑:实际上,问题更多是:我在隧道的 Linux 端需要做什么

答案1

要实现这个功能需要两个部分,因此我将分别讨论它们。

连接到您的服务器:

正如您所提到的,您只能与 443 和 80 上的代理通信,因此您需要通过代理隧道传输 SSH 连接。您可以通过告诉 Putty 使用代理服务器进行连接来实现这一点。在“代理”菜单下。选择 HTTP,然后输入公司代理的详细信息。

从您的帖子来看,连接似乎运行正常。

配置 Putty 在本地机器上创建 SOCKS 代理

Putty 和 OpenSSH 都支持打开 SOCKS 代理。对于 OpenSSH,您可以使用:

ssh -D <port>

然后将浏览器指向该端口。在 Putty 中,您可以创建一个“动态”端口转发。您可以在 Tunnels 菜单下找到它。输入您想要的监听端口,然后输入任何您喜欢的目的地(动态转发会忽略它)。然后您可以将浏览器的代理设置指向该 localhost:<port>,它应该可以工作。

有关更多信息,请参阅 putty 文档的相关部分http://tartarus.org/~simon/putty-snapshots/htmldoc/Chapter3.html#using-port-forwarding


正如其他人所说,您可能不想绕过公司过滤,因为这不是您想要解释的事情:)。

答案2

使用 ssh,您可以设置“动态端口转发”。请参阅http://www.panix.com/~ruari/censorship.html了解说明。基本上,您只需在本地机器上设置一个看起来像 SOCKS5 代理的端口。然后将浏览器配置为使用 localhost:port 作为代理。

我会三思而后行。在某些环境下,这种绕过公司安全的行为是被解雇的理由。

答案3

通过正常的端口转发,您只能浏览一个站点。

如果您可以编辑本地代理设置(我怀疑您可以),那么您可以在 SSH 服务器端运行代理并将端口转发到该服务器。

一些 SSH 客户端和服务器支持类似较低级别的 VPN 的安排,但除非您拥有完全的管理控制权(我猜您没有,因为您的描述暗示一个非常锁定的环境)。

一种解决方案是使用端口转发来访问运行 VNC 或 RDC 或类似程序的远程计算机。一旦您远程控制了该计算机,您就可以使用它进行浏览,尽管这当然会比较慢。

答案4

您可能不幸处于深度包检测路由器的保护下,在这种情况下,通过任何端口的 SSH 流量都将被丢弃。

解决该问题的方法是将 STunnel 与 SSH 结合。

我个人使用的易于设置和使用的代理是 privoxy.org。

相关内容