雕虫小技:SSH隧道--代理服务器,翻墙 socks v5 securecrt

“雕虫小技”系列文章是一些其实不是什么新鲜玩意但我却是刚刚发现或学会的东西。

访问Wikipedia等网站的困难已经是一个由来已久的问题,常规的解决的方法无非就是用一些**软件,比如Tor就是其中的一个出色代表。不过我不是很喜欢Tor,因为基于类似P2P这样的原理,决定了它不能提供一个稳定的链接,而且Tor的速度我也一直不是很满意。其它的一些解决方案包括使用网页代理、国外SSL代理之类的也是各有长处、各有不足。

其实如果你在国外可以找到一台支持SSH登录,并且可以支持外连的主机的话,用SSH隧道技术就可以很方便的为自己构造一个加密上网的渠道。

假如你有一台SSH主机是somehost.org,用PuTTY等终端程序时只需输入这个主机名和对应登录信息就可以连上去。要实现SSH隧道, 非常简单,只需在PuTTY的Connection->SSH->Tunnels中创建一个Dynamic的Foward端口就可以了。比 如,我们可以在Source port中输入6500,然后选Dynamic,再点一下Add,在Forwarded ports中就会出现“D6500",这时隧道就设置好了,如果你现在再登陆到这台主机上,你与主机之间就会创建出一条SSH加密的通 道,所有你发往本地 6500端口的的请求,都会通过SSH隧道传到对方主机上再发送出去,并把返回的结果也以相同的方式传回来。

                                              putty的设置

 

很好,最后一步操作就是在浏览器中设置代理服务器了,设置一个SOCKS(v5)代理【火狐自带,其他浏览器需要下载工具插件支持ssh代理】,火狐对应的插件是autoproxy[网上搜说autoproxy是怎么安装的,有一个地址,下载,然后安装,最后配置好即可,用法很简单。需要注意的一点是,添加了代理后需要重启浏览器才能看得见],服务器地址用127.0.0.1,端口就是前面设的6500。好了,尽情冲浪吧。

对于类Unix用户,操作更简单,直接ssh username@somehost.org -D 6500,连上之后一样在浏览器中设上代理就可以了。

SSH隧道其实还可以在很多需要穿越防火墙的情况下提供帮助,留待进一步发现了。

嗯,so far, so good。但是不能忽略了一个问题就是哪里去找国外支持SSH的主机呢?嗯,http://www.red-pill.eu/freeunix.shtml这 里有一个很全的列表,提供了很多的免费的Shell Server,不过其中究竟哪些可以支持SSH Tunneling有待各位自己试验了。目前我在用的是silenceisdefeat.org提供的免费服务(但需要通过PayPal捐赠1美元或写传 统信件给他们以证明你的邮政地址是有效的),OpenBSD主机,功能比较全,甚至还包括了50M的PHP和MySQL空间(MySQL的权限需要在上面 玩它的俄罗斯方块,达到一定成绩才行),但有些时段的速度不是很理想。对于自己有租用国外虚拟主机的朋友,也可以自己试验一下主机是不是支持,据我所知, 很流行的DreamHost是可以支持的。

最后顺便提一下Unix-Center网站,一家国内的提供 Unix实验环境的网站,提供了Intel/AMD/SPARC下的Solaris和Intel下的Fedora,Ubuntu,FreeBSD以及龙芯 上的Debian系统的实验环境,速度还比较理想,而且gcc/make/Perl/Python等开发工具也安装的比较完整,有时想要测试了一下一个程 序在不同平台上的表现或是比较一下不同发行版的差异时还是挺好用的。不过Unix-Center的主机都在国内,而且不允许外连,所以用它们是不能完成前 面说的做代理的功能的。

 

加密方式:

整个连接中,(1) 浏览器→putty 是非加密的,(2) putty→ssh服务器 是加密的,(3) ssh服务器→目的地是非加密的。

                     (1)是本机连接,不加密也没有问题。(2)的加密会将整个请求加密,也就是说,如果你用浏览器上网,那么不仅请求的内容,就连请求URL都会被加密。因 此关键在于(3)上,只要(3)是一个畅通无阻的连接,整个连接就是安全的。

 

 

备注:

 经常在网上看到有人说自己利用putty工具登录服 务器总是连接不上,这样的情况自己在刚接触putty时也遇到过。在 Connection 里面有个 Seconds between keepaliaves,这里就是每间隔指定的秒数,就给服务器发送一个空的数据包,来保持连接。以免登录的主机那边在长时间没接到数据后,会自动断开 SSH 的连接。如下图:

 

 

 

 

 

 

注意:如果不使用putty而是使用SecureCRT作为sock5代理按照如下设置即可

securecrt过一段时间连接会断开,设置  ”选项“-->”会话选项“-->"终端"---->进行反空闲设置,发送协议即可,不用发送字符串

1.SecureCRT支持Port Forwarding功能,可以使用它来构建Sock5代理。

在ssh连接的session option里添加local port forwarding的设置,指定本地的监听端口,远程勾选dynamic forwarding using SOCK 4(实际上支持部分 SOCK5)的功能。

 

2.火狐浏览器的autoproxy的配置

用火狐打开

https://addons.mozilla.org/zh-CN/firefox/addon/11009

点击”添加到firefox“即可,然后重启浏览器

 

然后,右上角”附加组件“,找到autoproxy-->配置选项--->"代理服务器"-->"编辑代理服务器"--->"添加你需要的socksv5代理",然后重启浏览器,否则看不到你刚才添加的代理

重启后:  找到autoproxy-->配置选项--->"代理服务器"-->"选择代理服务器"-->”配置默认代理选择你刚才加入的代理即可“

完成后,会在导航栏上有显示,请看下图,选择"全局代理"

 

 


分享到: 微信 更多