iPhone与iPod Touch中使用SSH与PAC代理上网

来源:小小猪

之前购买SSH帐号其实并没有想到可以一并解决iphone平台上代理的问题(ipod touch也适用)。后来在网上搜索才发现了破解后的iphone也可以通过SSH使用代理。

  具体的方法就是给iphone越狱,安装OPENSSH和MobileTerminal,这个我就不说了,不是这个范畴的。

  第一步:在WIFI连接里的"HTTP代理"中选择"自动",在下面一栏中输入PAC(Proxy Auto-Config )文件的地址如:http://xxx.com/p.pac (注意!http:// 不可少!)

   这一步里涉及到PAC文件的存放位置问题。目前很多人使用的都是含有"稀有"网址的PAC文件,所以一旦不是https传送,就会被如来神掌发现并灭 了~而https可以存放的我目前知道的就是dropbox。但我不建议使用,因为那样是毁了dropbox,我们还需要它呢。

  可是如果把PAC文件放在非https的空间里,过不了一会你的空间就会被灭了。所以建议如果是家里上网,可以用HFS在自己电脑上建立一个pac文件,然后让iphone或者ipod touch访问电脑上的PAC文件。这样在局域网里传输就不会有问题了。

  如果是iphone使用3G网络或者凡是不是上面那种情况的,建议使用没有"稀有"网址的PAC文件。请看下面PAC文件内容:

  function FindProxyForURL( url, host ){if ( shExpMatch(url, "*XXX*"))return "SOCKS 127.0.0.1:7070";elsereturn "DIRECT";}

  这段代码的意思是当网址包含XXX的时候,就用代理,其他情况,就直接连接。

  我测试过,如果不进行后面的步骤打开SSH连接,但仍然通过SOCKS 127.0.0.1:7070方式连接不会出现问题。似乎这样的时候它就等于直连。

  所以我们可以设置这段代码为任何时候全局都是用SOCKS 127.0.0.1:7070连接。而我们需要悦墙的时候就进行后面的步骤打开SSH,不需要的话,关闭SSH即可。就免除了去WIFI里输入删除网址的麻烦。

  所以PAC文件可以写成function FindProxyForURL(url, host){ return "SOCKS 127.0.0.1:7070"; }

  这样的话,当SSH启动时,iphone就是全局代理了。虽然会不方便,但对于iphone这种一次只能运行一个程序的东西来说,我看不会造成很大的问题。

   另外,照理说上面代码的第二句可以写成"{ return "DIRECT; SOCKS 127.0.0.1:7070"; }",也就是直连是首选,直连失败再用代理。本来这个功能应该是相当完美的才对。只可惜它的判断直连似乎在这似乎没什么用~所以还是用上面那个代码了。

  备注:很多人可能会想这一步里为什么不直接在手动栏里填写服务器和端口,而要这么麻烦设置PAC文件。我起初也是这么想的,也尝试了,但是失败了。后来心想可能是因为那样的话就默认为http代理了,而SSH代理是SOCKS代理。所以会不成功。

  第 二步:在iphone或者ipod touch上打开MobileTerminal,输入ssh -D 7070 username@host 回车即可。第一次会要求输入个YES和电脑上是一样的。然后就是输入密码,输入的时候光标是没反应的。所以输就是了,别以为死机了。输完了就按回车,过一 会出现美元$标志就说明好了。退出MobileTerminal。去享受悦墙的乐趣就可以了。

  关闭SSH帐户的办法是进入MobileTerminal,如果是之前登录的界面就输入logout回车。如果不是,就输入killall ssh。

  总体来说,SSH这种代理方式还是不错的。速度也还行。我购买的主机是在美国华盛顿,延迟330MS多。看youtube需要暂停下看。不过我这看youku也是总卡的。没办法,估计是我这网速本来就慢吧。反正SSH速度不错。

2 条评论:

Frank 说...

用了你的方法,好像还是不行。不知道为什么

RedEva 说...

你好,有两个问题:
一、不设置那个pac文件可不可以,全局SSH就全局吧,多一个步骤总是麻烦
二、我连接SSH后总是提示,“cound not chdir to home directory /home/user , no such file or directory”,然后就连接关闭了,你知道是怎么回事吗?

您的评论正在等待审查。