如何利用一台远程服务器快速的科学上网

前提当然是你要有一台位于国外的,国内能访问的服务器

作为一个程序员,应该自带翻*墙属性,其一是安装的包的源都在国外,其二是代码托管通常都是github,bitbucket之类的网站,其三是各种资料还是国外的靠谱一些。

之前本着不折腾的原则,我尽量都是使用第三方的服务,比如红杏,比如shadowsocks。首先是用起来确实很稳定,很爽,其二就是他们的口碑都不错,花钱了就更安心了。
但是最近红杏完全倒下,shadowsocks的项目也被关闭,如果日后再被屏蔽,恐怕开源社区也难以跟上了,因为少了中心结点,找到新的更新难度也会加大,不排除大陆会完全屏蔽github的可能性。因此自己研究一下翻wall(墙)还是很有必要的。
以前经常被搭梯子的名词给吓到,比如代理,反向代理诸如此类,而我到现在都不会配置Nginx。但是最近同事教了一个超级方便的方法。

首先你需要可以ssh到那台可以自由访问的服务器,如果不知道ssh,请自行百度。然后输入以下命令

ssh -i <id_rsa_file> -D <port> <user>@<remote_ip>

id_rsa_file是登陆远程服务器的证书,port就是本地监听端口, remote_ip是远程服务器的IP地址,user是登陆到这台服务器的用户名。
如果是设置的自己的私钥,通常可以改一下config,方便下次登陆。比如我放在远程服务器的公钥是id_rsa.pub,那么我可以修改 ~/.ssh/config , 如果没有,就新建一个。在里面输入内容如下:

Host hk
User root
Port 22  # not necessary
Hostname 119.119.119.119  # remote_ip
IdentifyFile ~/.ssh/id_rsa  # 密钥

有了上述配置之后,下面两个命令是等效的:

ssh -i ~/.ssh/id_rsa root@119.119.119.119
ssh hk

这样我们的第一个命令就可以简化为

ssh -D <port> hk

假设输入的port为8090,那么本地所有通过8090端口输入的数据,都会直接发到远程服务器去,如果是以root身份登陆,服务器会自动转发到相应的地址。(具体的原理我还不清楚,待我了解了回来补充。)
这样只要我们装个浏览器插件,把我们要翻wall的请求转发到8090端口即可。

之前大家用的最多的是switchySharp,但是最近出的switchyOmega灰常好用。首先要装一个switchyOmega,此处可能需要翻wall,不翻wall,可以打开chrome的扩展程序页面,然后把下载好的插件拖进去。具体请百度。
装好插件,打开配置,新建一个情景模式

新建一个情景模式

代理协议选择socks5,地址是本地地址,端口是刚才的8090.然后浏览器切换到刚才新建的情景模式,此时是全局代理。
回到配置,选择自动切换,这里可以自定义要翻wall的网站

自定义翻wall规则

这样当然可以,但是不够智能。网上有人维护了一个需要翻wall的列表,我们可以自动过去

地址:https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt

自动更新规则

选择立即更新。

浏览网页的时候,选择自动切换,这样以后翻wall就无忧了。