使用ssh访问外部网站

By | 2014年10月12日

由于国内的环境,许多外部的服务都无法使用。被认为是轻而易举能够得到的资源,在内地只能是可望而不可即。

从另一方面讲,这促进了国人翻墙技术的发展。各种翻墙软件在这个环境下催生,并有各自的用户和市场。许多人被逼着去学相关技术,最后还可能成为了高手,不得不说要感谢国家啊!

之前一直使用goagent这个软件,到如今google服务经常性被封杀,这个软件可使用的范围越来越少。因为打算申请adsense的账号,不得不翻墙。现在觉得比较靠谱的是使用ssh翻墙。

之前使用过squid代理,可惜如果服务器在境外,经过路由的时候直接就被丢掉了。现在想来squid代理只能在内网使用,放到外网上基本上是死路一条。没办法,只能寻找更安全的代理抓取外部网页的办法。

配置vpn服务器是一种解决办法,由于配置繁琐,直接就放弃了。最后想到的那就尝试用ssh代理吧。

使用ssh代理,需要你有一台外部的vps,最好是国外的,能够访问各种所需服务。假设你可ssh连接到vps,如下步骤可建成一个代理服务器:

  1. ssh -D127.0.0.1:8080 [email protected]

    使用-D参数绑定监听。上述命令中我们监听的端口是8080.如果你知道-N和-T参数的含义,上述命令可以改为: ssh -NT -D *:8080,这里我们监听所有的来源而不限于本机(127.0.0.1)。通过这样做,可以对外提供服务。

  2. 配置浏览器的代理。我使用的是switchysharp这个插件,在配置里找到socks代理,主机填写127.0.0.1,端口填写刚才使用的8080端口,协议版本选择socks v5.0。

  3. 保存配置,并且启用该配置,就可以看到能够顺利访问外部站点资源了。

ssh代理的原理如下: 用户的请求直接走ssh的通道向远程服务器发起请求。由于ssh是加密连接,内容不能被外部监听,所以只要能连到服务器就有效。而squid之类的代理,首先还是要通过http方式请求服务器,中间路由一看到请求的地址,然后就干掉了。

此代理的限制: 在使用过程中应当保持ssh会话一直连接。由于请求是通过ssh通道传递,所以要保证ssh会话有效。使ssh处于不断线状态可在服务器上做如下配置:vim /etc/ssh/sshd_config,将下面配置启用:

    ClientAliveInterval 60
    ClientAliveCountMax 3    

然后重启sshd服务: service sshd restart·

下次再次连接进来,即可发现会话会一直保持,就可以愉快的上网了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注