在OpenWRT上搭建ssh代理
首先为何要用ssh代理,而不是ShadowSocks或VPN:GFW会针对ShadowSocks或各种VPN协议做解析,却不一定有勇气禁止全部ssh连接(国家曾经有次物理断开到国外的全部网络连接造成了巨大经济损失)。
前段时间开发了SSHMole,用作OS X上的ssh代理客户端。然而MAC给iPhone开ssh代理,或在iPhone上直接开ssh代理还是很麻烦的。所以在家里路由器上开了个ssh -D。
0. 首先要有一台VPS
没有的话到vpsadd买一台。
1. OpenWRT上安装ssh-client, openssh-keygen
登录到OpenWRT,移除ssh到dropbear的软连接
1 2 |
|
安装:
1
|
|
在极路由上,openssh-keygen需要加入其他软件源(我是懒得装了,直接在OS X里生成了identity,scp到了OpenWRT和VPS上);另外极路由默认已安装openssh-client了,直接将其软链到ssh和scp:
1 2 |
|
2. 在OpenWRT生成rsa密钥对,复制到VPS
生成identity:
1
|
|
复制id_rsa.pub到VPS的~/.ssh/openwrt.pub:
1
|
|
然后连接到vps后,将openwrt.pub加入到authorized_keys:
1
|
|
回到openwrt,测试ssh是否能免密码登录:
1
|
|
3. 安装autossh
1
|
|
测试autossh是否能正常启动:
1 2 |
|
4. 设置autossh开机启动
在init.d下建立文件proxy_vps:
1 2 3 |
|
在里面填入如下内容(在极路由上直接启动autossh会失败,先sleep一会就能启动了,不知为何):
1 2 3 4 5 6 7 8 9 10 11 |
|
然后启用开机自动运行:
1
|
|
5. 增加pac文件
OpenWRT自带uHTTPd,直接将pac文件scp到/www下即可:
1
|
|
然后给pac起个短点的名字:
1
|
|
再在路由器的hosts里给路由器起个短域名,极路由已经默认起了好几个了,比如t就是。
在浏览器中访问 http://t/b 试试看能不能下载到刚才上传的pac文件,如果可以,在设备中设置自动代理为 http://t/b 即可。
Over