利用Putty通过ssh端口转发实现软件的加密代理访问

花絮:前天晚上9点买下了rashost的美国Linux主机,昨天早上发现登陆不了,咨询服务商,被告知网络被攻击,正在抢修(其实是他们催着美国那边的人在搞)。后来说网络会在晚上恢复,可是等我夜间22:35离开办公室依然没恢复,惨!不过rashost有一点做得不错,就是事情发生后主动提出赔偿一事:网络恢复正后,提交服务单,免费增加一个月的vps使用时间!其实这也正是他们的服务条款中“有限赔偿”提出来的:“RASHOST对客户的最大赔偿金额为客户所用服务的一个月服务费 这一点值得称赞!相比较中国移不动那种虽大但是出了问题除了说抱歉之外没实际赔偿的行为,我还是更喜欢这样的公司!不过有一点比较郁闷,到今天早上我过来网络依然不通……看来得继续等待了!好了,不废话了,进入本文正题!


目前寻求翻墙的方式无非就几种:

  1. 寻找web代理
  2. 自行寻找http/sock5代理(这个可以去网上搜索代理ip)
  3. vpn翻墙(目前可以自行架设vpn服务器,或者用外国的免费vpn服务,可见:免费实用简单的国外VPN-UltraVPN
  4. ssh 加密隧道转发sock5代理(本文所提)

前提条件:一台可以通过ssh登陆的服务器(linux)、Putty软件

原理:设置Putty软件中将连接到本地某个端口的数据转发到通过合法/不合法的账号登陆远程linux主机的ssh端口上,而这个链接是加密传输(secure tunnel)的!

本文我采用的是linux是本地局域网中的CentOS,采用root登陆,当然,只要能登陆的账号都可以!首先,配置Putty,如果已经有保存记录的,选择记录后,直接Load(本文为168那个ip)

090802_ssh1.jpg

大小: 42.32 K
尺寸: 300 x 290
浏览: 118 次
点击打开新窗口浏览全图

切换到SSH标签下的Tunnels,在Source port后面输入需要监听的本地端口(本文为3128,冒充下squid默认正向代理端口,吼吼),点击Add就加到了转发端口中了。这样的话你本机就可以通过3128端口作sock5代理进行操作了。如果你想让别人的电脑也可以通过你的电脑进行访问(比如说别人的电脑上不了外网,但是可以上内网连接到你的电脑),你可以把“Local ports accept connections from other hosts”(本机端口接受其他主机的的连接)勾上。当然,你也可以再增加其他端口,每个端口分配给不同的人用,呵呵!

090802_ssh2.jpg

大小: 40.2 K
尺寸: 300 x 291
浏览: 152 次
点击打开新窗口浏览全图

做完上面这些操作,点击Open打开ssh登陆界面,登陆即可!然后不要关闭该窗口,那么连接到本地3128端口的数据都会转发到远程linux的22端口下,实现加密代理效果!

090802_ssh3.jpg

大小: 9.82 K
尺寸: 300 x 76
浏览: 90 次
点击打开新窗口浏览全图

在Firefox浏览器中进行代理设置(sock5代理),如图,那么之后像QQ软件都可以通过这个sock5代理地址进行连接了!简单方便!

090802_ssh4.jpg

大小: 31.27 K
尺寸: 300 x 266
浏览: 111 次
点击打开新窗口浏览全图

以下为成功打开3128端口进行监听(下面7070是开了另外一个ssh进行转发操作,主要是对比了下,当允许外部主机连接本机作为代理服务器,那么必然有两个监听地址,上面这条记录是任意的,下面这条记录针对本机)

090802_ssh5.jpg

大小: 10.93 K
尺寸: 300 x 65
浏览: 184 次
点击打开新窗口浏览全图

以下为通过3128端口进行转发的数据连接(26主机通过我的电脑出去的)

090802_ssh6.jpg

大小: 13.87 K
尺寸: 300 x 61
浏览: 112 次
点击打开新窗口浏览全图

访问http://www.123cha.com查询:

  • 代理前ip:++ 您的ip:[*.*.*.235] 来自: 浙江省 杭州市 电信 ++
  • 代理后ip:++ 您的ip:[*.*.*.233] 来自: 浙江省 杭州市 电信 ++

注:前三个*代表一样的,最后一个不一样,因为出口外网的ip是随机的,但是只针对单台内网电脑,不是针对每次链接。

这样就说明成功翻墙(不过用国内linux主机估计翻墙概率不大吧?吼吼)!


以下内容是后续搜索,个人认为可以补充到本文,因为有些话我还没提到。

来自CSDN博客(用SSH穿透gfw):http://blog.csdn.net/lansh_hit/archive/2007/05/21/1619997.aspx

在不能使用代理服务器或者tor绕开防火长城的场合(比如单位里面不可以使用非企业代理,比如日后tor被土共封锁),如果ssh 22端口没有被封锁,那就可以利用OpenSSH强大的tunnel功能来
实现高速安全的访问Internet任意开放网站的任意开放端口 。在这里简称挖地道

1准备条件:
1.1 某国外主机shell,这个需要你自己去找,买一个或找找一个免费的,需要上面的开启sshd
1.2 Firefox浏览器配合foxyproxy扩展,虽然用IE也方便,但是当大多数网站不需要挖地道访问只有个别网站需要挖地道访问自己又是懒人懒得每次访问blocked网站去切换浏览器的代理设置的情况下,用foxyproxy这个基于模版自动匹配代理的扩展还是很方便的。
1.3 国外代理服务器,任意一个高速匿名免费代理服务器

2原理:
2.1首先man ssh,注意ssh的manpage里面这也一个选项:

-L port:host:hostport
Specifies that the given port on the local (client) host is to be
forwarded to the given host and port on the remote side. This
works by allocating a socket to listen to port on the local side,
and whenever a connection is made to this port, the connection is
forwarded over the secure channel, and a connection is made to
host port hostport from the remote machine. Port forwardings can
also be specified in the configuration file. Only root can for-
ward privileged ports. IPv6 addresses can be specified with an
alternative syntax: port/host/hostport
2.2基本格式

ssh -l USER -L local_port:any_host_blocked_by_gfw:the_blocked_hosts_port ssh host_which_out_of_gfw

这样任何被屏蔽的主机(any_host_blocked_by_gfw)的任何端口(the_blocked_hosts_port),就可以在本机127.0.0.1的localport访问了

2.3解释,这里有好几个host不要搞错。
ssh -l USER是你用来登录目标ssh主机的用户名,ssh就加上一个-l选项
local_port:本机的某端口,最好大一些,保证没有被其他程序占用的,以后被屏蔽主机的某端口就被映射在本机的此端口
any_host_blocked_by_gfw:任何一个被gfw干了的主机,比如zh.wikipedia.org
the_blocked_hosts_port:前面提到的被干了的这个主机的某个端口,比如25 23 80
host_which_out_of_gfw:任何一台不在土共的GFW范围内的ssh host

2.4例子:
ssh -l fuckGFW 8088:zh.wikipedia.org:80 fuckgfw.free.com

我用fuckGFW帐号登录fuckgfw.free.com主机,并且把维基百科中文的80端口映射到本机的8088端口,这样下次用http://localhost:8088来访问维基百科

3应用:
每次去挖这样一个坑麻烦了点,这时候就要动动脑筋想想别的办法了。普通的代理服务访问国外主机虽然会被土共的gfw盾,但是,如果把普通国外代理服务器加上一个ssh的套套,那土共的GFW就煞笔了,而且即使土共把这个代理服务器本身干了也没用,因为我们的国外ssh host和国外的代理服务器都是在GFW之外的,那就是终极解决方案:
用ssh tunnel给国外代理服务器加套
例子:
ssh -l fuckGFW 3128:proxy.anywhere.com:8080 fuckgfw.free.com

按照提示输入fuckGFW帐号在fuckfw.free.com主机的密码,然后保持这个ssh连接不要关掉,
这样就给国外的代理服务器proxy.anywhere.com加了套,然后在本地的浏览器设置代理为localhost:3128,那么只要你到fuckgfw.free.com的连接是22端口的ssh加密连接,土共就对你的内容无可奈何。
至于fuckgfw.free.com和proxy.anywhere.com之间是不是加密的会不会监听,目前看来似乎是不加密的(否则我在防火墙内我的本机开一个ssh再加上一个squid就可以访问任意国外主机了),所有这样做还是有风险,千万不要用这样的方案访问你的paypal帐号gmail等等。但是用来绕开防火墙,正常使用google是足够了,访问blogspot wikipedia等等也没有问题。

4.To Do
通常网上容易找到的代理服务器都是只支持http的,支持https的还没有找到,所以访问https的内容比如gmail还是没有好的解决方法,目前只能设置一下foxyproxy直接访问https的内容(或者用tor),还有一个办法就是再挖一个通道,把gmail的pop服务器的端口和smtp直接映射在本地的某端口,宁可暂时放弃一下gmail web的丰富feature,也要不受限制的访问google的服务。注意,在ssh到一台主机的时候,可以同时挖n条隧道的,也就是可以在ssh命令后面加上n个-L 参数

5.补充
使用windows操作系统的也可以用此方法,putty对ssh的tunnel有完美的支持。

http://talk.blogbus.com/logs/2006/11/3875229.html
http://yesure.blogspot.com/2006/11/ssh-tunnelfuck-gfw.html

Tags: 代理, 翻墙, gfw

上一篇: 杭州旅游消费券领取之旅[图]
下一篇: UTF-8网页乱码怎么办?用UltraEdit转码!

相关文章

发表评论