关闭ssh tunnel的shell帐号如果做代理

2011年8月1日 | 分类: 翻墙相关 | 标签: , , ,

我们一般所说的ssh翻墙是指使用ssh tunnel的动态转发来代理翻墙。

不过不少国外提供免费shell帐号的服务商都关闭了ssh tunnel(有的需要付费开启,有的付费也不能用),那么关闭ssh tunnel的shell帐号如果做代理呢?那就要用到sshuttle了。

以前的文章sshuttle: 穷人的VPN里提到过sshuttle,不过那时我还不知道他在关闭ssh tunnel时还能做代理,这个功能是在推特上看到有推友提到的。

不过这个只适用于Linux和mac os系统,而且需要ssh有shell权限,对于一般翻墙者来说有一定难度。

首先要有一个有shell权限的ssh帐号,不需要root权限也不需要开启ssh tunnel(不少网友免费提供的和免费php空间提供的ssh一般都是没有shell权限的),可以申请国外免费shell帐号的网站列表参考:http://www.bylur.net/free/和http://shells.red-pill.eu/(申请时不明白的就谷歌翻译吧,不过总体来说申请还是不容易的)。

然后下载sshuttle在Linux终端输入以下命令即可(需要支持python)

sudo git clone git://github.com/apenwarr/sshuttle

会提示你输入你操作系统的管理员密码,输入,等完成安装后在终端输入以下命令

sudo ./sshuttle/sshuttle --dns -vvr 用户名@服务器域名或IP:ssh端口 0/0

(其中红字修改为你的shell帐号的用户名、服务器地址和端口,这个命令是使用ssh服务器的DNS,相比以前文中那个可以防DNS污染)

会提示你保存ssh密钥,输入yes回车,稍等会提示你输入ssh的密码,输入密码后回车,稍等如果不出错就可以打开浏览翻墙浏览了。

(如果出错可以输入sudo ./sshuttle/sshuttle…这行命令再试一遍,sshuttle是类似VPN的全局代理不需对浏览器进行代理设置)

不使用时,在那个终端处按Ctrl+C键关闭sshuttle(如果不能关闭或关闭后出现网络问题,重启系统就可以了)

理论上sshuttle应该比ssh tunnel速度快,不过在以上配置下我具体测试中发现sshuttle速度比ssh tunnel慢很多尤其在观看在线视频和下载时。在官方论坛看到的解释是sshuttle有个内部控制以牺牲宽带来降低延迟,也就是上面的配置下,浏览网页很流畅不过看在线视频和下载会较慢,如果使用以下不限速的配置,看在线视频和下载速度很快不过浏览网页可能就没有那么流畅啦。

sudo ./sshuttle/sshuttle --dns -vvr 用户名@服务器域名或IP:ssh端口 0/0 --no-latency-control

本文原始地址http://igfw.net/archives/4123

  1. ym
    2011年9月8日23:04

    hi.博主用的ubuntu是10.04还是11.04?10.04好像用sudo apt-get install git 装不了git,提示没git这个包

    • iGFW
      2011年9月8日23:29

      那就安装git这个包呀,要不你去官网下载软件包解压到用户文件夹就可以用了。

  2. YM
    2011年8月23日17:32

    怎么这里又显示sudo git clone git://github.com/apenwarr/sshuttle?这2个sshuttle是一回事吗

  3. ym
    2011年8月23日12:15
    • iGFW
      2011年8月23日15:18

      文中的sshuttle就是https://github.com/foursquar/sshuttle

  4. ym
    2011年8月19日19:09

    真的成功啦。在 ubuntu desktop下,运行sudo ./sshuttle/sshuttle –dns -vvr 用户名@服务器域名或IP:ssh端口 0/0,等到界面出现waiting…,ubuntu desktop就处于全局代理的环境下了(就好象处于vpn环境下一样)。

    • iGFW
      2011年8月19日20:23

      这个很好用的,就是看视频速度慢点。

  5. fish
    2011年8月13日17:37

    有啊,我在sdf.org申请的。你不妨也申请一个,看能不能用来翻墙?

  6. ym
    2011年8月13日13:29

    哦,应该输入sudo ./sshuttle/sshuttle –dns -vvr 用户名@服务器域名或IP:ssh端口 0/0,不过还是提示:
    stty: TIOCGETD: Inappropriate ioctl for device
    stty: TIOCGETD: Inappropriate ioctl for device
    stty: TIOCGETD: Inappropriate ioctl for device

    • iGFW
      2011年8月13日14:54

      你的ssh帐号没有shell权限吧,你ssh看看能不能执行shell命令。

  7. ym
    2011年8月13日13:20

    hi.
    我输入sudo ./sshuttle/sshuttle –dns -vvr 用户名@服务器域名或IP:ssh端口 0/0后,回车,出现如下提示:
    fatal: ‘\xe2\x80\x93dns’ is not a valid IP subnet format,怎么回事呢?

  8. fish
    2011年8月12日12:08

    我试了一下,没成功。博主成功过吗

    • iGFW
      2011年8月12日12:16

      成功啦,elitter.net提供的免费shell帐号关闭了ssh隧道,用sshuttle在ubuntu下测试可以翻墙。