使用SSH隧道浏览网页

设置:

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

目前,我所做的是哪些工作:

  • linux的机器运行sshd,监听端口443。
  • 在putty中,我可以简单地通过在代理configuration面板中将代理configuration为HTTP代理来连接到Linux。

我想实现的是:

运行浏览器,在我的Windows机器上,通过使用某种ssh隧道,浏览网页没有任何限制。

我相信这被称为代理弹跳,或类似的东西。 但我必须承认,我有点失落。

从我的理解,我将不得不configuration一个隧道腻子,例如在窗口端口8889听。 然后,我可以将浏览器configuration为使用位于localhost:8889的代理

现在变得模糊的那一刻。

在Linux的机器上,我将不得不在SSHconfiguration文件中configuration一个ProxyCommand或类似的端口转发? 另外,我将不得不运行像Linux上的鱿鱼代理? 我发现的一些教程描述了Apache的设置:

还是我完成了错误的方向,我必须运行ProxyTunnel都在Windows和Linux的盒子?

谢谢你的帮助。

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

有两个部分要做到这一点,所以我会单独解决他们。

连接到您的服务器:

正如你所提到的,你所能谈论的只是443和80上的一个代理,你需要通过代理来连接你的SSH连接。 你通过告诉Putty使用代理服务器来连接。 在“代理”菜单下。 selectHTTP,然后input公司代理的详细信息。

从你的post来看,好像你的连接工作正常。

configuration腻子在本地机器上创build一个SOCKS代理

putty和openssh都支持打开一个SOCKS代理。 对于OpenSSH,你可以使用:

ssh -D <port> 

然后将浏览器指向该端口。 在腻子中,您创build了一个“dynamic”端口。 你会在隧道菜单下find它。 input您想要的监听端口,然后input您喜欢的任何目的地(对于dynamic转发,它将被忽略)。 然后,您可以将您的浏览器代理设置指向该本地主机:<端口>,它应该工作。

欲了解更多信息,腻子文档的相关部分在http://tartarus.org/~simon/putty-snapshots/htmldoc/Chapter3.html#using-port-forwarding


正如其他人发布的,你可能不想规避企业过滤,因为它不是你可能想要解释的:)。

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

做这样的事情之前我会三思。 在某些环境下,企业安全的旁路是解雇的理由。

使用正常的端口转发,您只能以这种方式浏览一个站点。

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

一些SSH客户端和服务器支持较低级别的VPN类似的安排,但除非你有完整的pipe理控制(我猜你不是因为你的描述意味着一个非常locking的环境)。

一种解决scheme是使用端口转发访问正在运行VNC或RDC或类似服务器的远程机器。 一旦你有远程控制该机器,你可以浏览使用它,虽然这当然会更慢。

我想build立一个本地的SSH隧道应该适合你:

  1. 在端口xxxx的linux盒子上设置http代理
  2. 连接linux的盒子与本地的SSH隧道,SSH客户端命令会喜欢:

    ssh -L 8899:127.0.0.1:xxxx user @ remote -p 443

腻子可能类似,但使用对话框。

实际上,您可能不幸处于Deep Packet Inspection路由器之下,在这种情况下,通过ANY端口的SSHstream量将被丢弃。

这个问题的解决scheme是STunnel结合SSH。

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

这个旧的,但良好的lifehacker文章有非常用户友好的教程如何在Windows中做到这一点。 PLUG_ALERT: 这是另一个教程 ,由我写的:-)