关于为啥翻墙,我没啥好说的了。
关于如何翻墙,这里推荐用SSH

SSH翻墙原理
ssh是security shell的缩写,用于提供一种远程登录SHELL传输数据的协议,一般ssh多半用于远程操作主机,像我经常使用ssh登录到远程linux服务器做一些维护工作,比如编译,更新新版本的程序,或者增加主页配置等。
但是,不一般的话,使用ssh命令带上-D参数,可以使用ssh工具从本机到远程服务器建立一个SOCKET5隧道,这时,使用任何支持SOCKET5代理的浏览器(现在chrome,firefox安装了相应的插件后都可以支持,mac系统下直接可以修改系统的网络代理设置,使其通过SOCKET5访问)通过该SOCKET5隧道进行网络访问后,访问网站相当于绕到你的远程主机上后传输数据,达到了翻墙的目的。

如何安装

Windows额外需要做的
安装cygwin,请使用传送门移步到cygwin的主页上,然后下载cygwin的安装程序到你的硬盘中,然后双击运行该安装程序。运行了该安装程序后,就着cygwin的向导,一直向后,来到一个选择安装包的窗口,在这个窗口中输入ssh后然后在下方过滤出来的安装包中钩选openssh选项,确定无误后继续下一步,然后请耐心的等待安装完成。安装完成后,将会有一个unix/linux的环境,双击cygwin的主图标,然后会打开命令提示符的窗口。

Windows/MacOs/Linux下共同做的
此时,你应该知道你的远程主机的ssh访问帐号及密码,那么,现在就可以开始建立一个SOCKET5隧道了,使用ssh yourname@yourhostname -D 7070在本机端口7070上建立一个SOCKET5隧道,你需要输入密码,是的,如果你没有把本机的公钥加到该远程主机的授权列表中的话。输入密码回车后,你将登录到远程主机上,同时,打开了一个SOCKET5隧道。

Firefox请看
打通了SOCKET5隧道,意味着你可以打开浏览器通过该SOCKET5隧道访问网络了,请安装AUTOPROXY插件,在FIREFOX的附加组件中,输入AUTOPROXY安装。安装完该插件后,重启FIREFOX,会在FIREFOX窗口右上方看到一个“福”字。该插件将会修改FIREFOX本身的网络访问的代理选项,请找到并选中SSH -D这个选项,并检查该选项是否设置通过7070端口。好吧,一切就续后,直接点击右上角的“福”字,一直到绿色或者红色(红色表示自动选择网络,有些网站没必要通过代理就能访问的,将不通过SOCKET5隧道),然后输入www.facebook.com测试,或者www.twitter.com。如果还是无法访问网站,请将你的DNS设置成为:208.67.220.220和208.67.22.222(OpenDNS)或者8.8.8.8和8.8.4.4(GoogleDNS)后重启电脑,因为DNS一样会遭到污染。

Chrome请看
和FIREFOX一样,需要安装插件VPN.S.HTTP.PROXY,输入VPN后应该可以找到。然后在Profile details中的sockets host中输入127.0.0.1及端口7070,名称给个简单的,比如:ssh tunnel就可以了。同样在右上角也会出现一个盾的图标,若是灰色的,表示不使用代理访问,若为金黄色,则表示通过代理访问。点击在下拉的菜单中选择ssh tunnel后可以使chrome通过该设置的代理进行网络访问。DNS问题请参考Firefox,需要设置你的DNS服务器,通过OpenDNS或者GoogleDNS来解析域名。

Macos请看
请在你的Macos中安装Firefox或者Chrome后参照以上两条,阿门。

附,如何不输入密码而打开SOCKET5隧道呢?
其实就是把.ssh/id_rsa.pub文件授权到服务器上对应的登录用户的.ssh/authorized_keys文件中
1、首先使用ssh-keygen产生一对不对称加密key,输入ssh-keygen后一路回车,然后将在当前的用户的home目录下多出一个.ssh目录,里面有两个文件,分别为私钥和公钥
2、使用ssh-copy-id yourname@yourhostname,输入一次你的登录密码
完成以上两步后,你将授权本机登录该远程服务器不需要密码,其实就是将id_rsa.pub文件增加到了该远程服务器上的~/.ssh/authorized_keys文件后

附附:macos下没有ssh-copy-id命令的处理办法
1、先使用scp把id_rsa.pub文件拷贝到你的远程主机上:

scp ~/.ssh/id_rsa.pub <yourname>@<hostname>:id_rsa.pub

2、登录到远程主机:

ssh <yourname>@<hostname>
<输入密码>

3、将拷贝上来的本地的id_rsa.pub文件添加到.ssh/authorized_keys文件后

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

4、登出再登录将不需要密码了

翻墙使用ssh打通SOCKET5的隧道方式其实比较方便,因为不再需要VPN拔号的操作,而且只有网站访问通过该隧道,其它的像QQ,或者迅雷仍然走本地网络,互不干扰,HAPPY ENDING~~

1. 首先要有一台可以使用SSH登录的主机,取得SSH的登录信息,可能是用户名称和密码,或者可能是一个SSHKEY文件;
2. 然后,需要FIREFOX安装一个叫做AutoProxy的插件,安装好后,界面上会有一个“福”字的按钮,拉开按钮上的下拉菜单,选择上网方式为ssh -d,然后注意查看端口,默认应该是7070
3. 安装一个SSH代理软件,通过它登录SSH主机然后转发数据,并且在本机建立一个代理服务器,该软件的下载地址是:http://www.bitvise.com/tunnelier-download
4. 安装好了SSH代理软件后,取消掉Options页中的On Login中的所有的钩,因为我们不需要这些,然后注意修改Services页面中的Listen port至7070
5. 打开FIREFOX,并且在“福”字按钮的下拉菜单中选择“自动模式”或者“全局模式”,放心的上GOOGLE,FACEBOOK以及TWITTER吧!
6. 保存该Profile到文件中,并且建立一个快捷方式,加到Windows启动项,这样之后都不用再手动登录SSH了,命令为:tunnelier -profile=[profilename] -loginOnStartup

使用这种方式上网好处就是不像VPN播一次号后所有的网络流量都走代理服务器,而只是浏览网页才需要走代理服务器,甚至通过AutoProxy这个插件,可以指定某些特殊的网站才走代理服务器。

scp命令用于向远程主机拷贝文件,其中可以使用RSA不对称KEY来认证两台不同的机器,以使得每次使用scp命令不再需要输入密码。方法很简单:
1. 在CLIENT的机器上使用ssh-keygen命令,保存至默认的目录下。该命令会产生两个文件,一个为id_rsa,该文件为私钥,不可以公开,另一个为id_rsa.pub,该文件为公钥。
2. 把id_rsa.pub文件拷贝至目标SERVER机器中的用户目录.ssh/下,文件名称为authorized_keys
3. 然后再使用scp命令,则不会再次询问密码。

PS: 其实~/.ssh/authorized_keys文件应该可以保存不止一个KEY,其它的主机或者用户的id_rsa.pub文件应该使用>>管道命令追加到authorized_keys文件中