SSH 自动翻墙之 OS X 版
WHY 自动翻墙?
不做名词解释,您要是不能理解“翻墙”的含义,您可能不需要看下去。
所谓的自动翻墙,其实就是开机自启动 SSH session,并用手段让该 SSH session 能够自动重连,常驻内存,想用就用要用的方便。
Windows 下做到这点很简单,用我很久之前提到的 MyEntunnel 简单设置一下就可以了。
但使用者平均智商比 PC 用户低的,傻瓜都能上手的 OS X 下,就要相对复杂一点。有这么一个软件, Secrect Socks。 而且为了显示我们 MAC 用户智商并不低,我决定把这个问题弄的复杂一些,用 OS X 的标准启动程序 launchd 来完成自动翻墙的第一步:自动启动并保持在内存里。
步骤
首先我们需要一个软件叫 autossh,它的作用是启动一个 ssh 进程并且监控该进程,再有需要的时候重启以便保持 ssh 的连接。
autossh 可以通过 MacPorts 安装,也可以自行编译。除了要多指定一个监控端口外,它的使用方法跟 SSH 是一样的。我的 autossh 命令行:
autossh -M20000 -f -q -N -D 7777 username@domain.tld
这里你需要设置 SSH 自动登录,如果不知道如何设置请参考这篇文章。
到这里,我们的自动化只能算完成了一半,下面还要用 launchd 来启动 autossh, 这样每次系统启动时不必手动打入 autossh 命令。
vi ~/Library/LaunchAgents/any.file.name
any.file.name 的内容见此 txt 文件:any.file.name.txt
重启,搞定。一个 SOCKS v5 服务器就建立了,任何时候,在你本机上用 localhost:7777 就可以翻墙了。
分享一个翻墙的小技巧
我以前在 blog 上写过车东的提供的一个翻墙的方法,利用了 SSH Tunneling 来达到目的。这个方法好就好在稳定,如果你连接到的远程主机速度足够快的话,翻墙的体验是很好的。然后我又介绍过用 PHProxy 来翻墙,也能收到比较好的效果。不过 PHProxy 的作者已经宣布永久的停止开发 PHProxy 了,下图是作者网站上的声明:

于是我们就得大量使用 SSH Tunneling 的方法来翻墙了。但是有个问题,不管是在 Windows 下的 Putty 还是 *nix 下的 SSH 命令,运行后都会占一个窗口,除了占地方,要是不小心关了窗口浏览就中断了。最好就是把 Tunneling 放到后台去,让翻墙变的透明。
在 *nix 下
使用 SSH 命令:
ssh -f -C -q -N -D port number username@domain.tld
这样就可以把 Tunnel 放到后台执行了,参数的具体意思请参照 ssh 的 man page。
在 Windows 下
如果想把 Tunnel 放到后台,Putty 似乎不提供这个功能,不过我们可以使用一个叫 MyEntunnel 的小程序。它可以使 plink (putty 的命令行形式) 运行在后台并监视之,如果网络连接断了或是其它情况使 plink 停止运行,MyEntunnel 会自动重新启动 plink 并建立连接。
把 Tunnel 放到后台以后,翻墙就真正的透明了。所以,Happy Tunneling!
用 SSH 转移资料
Dreamhost 的空间还有几天就要过期了,但上面还有不少的资料,电子书,软件什么的,必须要及时保留下来。我的硬盘是没这个空间了,所以还是想办法保留在服务器上。现在在 (mt) Media Temple 上好是好,但 2G 的空间显然没有办法保存比这个数字多的多的资料。好在我年初买了一个 Surpasshosting 的空间,虽然从国内访问巨慢无比,但 400G 的空间用来保存资料还是绰绰有余的。
但怎么转移呢,先下载到本地硬盘上再上传?别开玩笑了,5G 多的东西这么个转移法还不得折腾死我啊。到是可以用我以前用过的下载办法,但不知道为什么 Surpasshosting 的 Shell 用 FTP 无法登入到 Dreamhost 的服务器,到了 “Entering Passive Mode” 部分就再也不走了。正没辙突然想到了 Linux 的加密拷贝命令 scp, 于是问题就简单了:
# scp -rp dir-to-copy user@domain:/path-to-copy-to
这么一条命令就解决了,而且数据是在一条安全的遂道里传输。由于资料较多,传输过程比较漫长,为了这段时间“妞照泡舞照跳”,我们需要让拷贝去后台执行。
于是按 Ctrl+z 把程序扔到后台去,再输入 bg %1 让它在后台继续执行。
然后该干吗干吗去,一早起来就会发现那一大坨东西已经乖乖的呆在新的地方了。