`
tessykandy
  • 浏览: 80765 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[转载]SSH Tunnel之突破GFW整体解决方案

阅读更多

在不能使用代理服务器或者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就煞笔了,而且即使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加密连接,GFW就对你的内容无可奈何。
至于fuckgfw.free.com和proxy.anywhere.com之间是不是加密的会不会监听,目前看来似乎是不加密的(否则我在防火墙内我的本机开一个ssh再加上一个squid就可以访问任意国外主机了),所有这样做还是有风 险,千万不要用这样的方案访问你的paypal帐号gmail等等。但是用来绕开防火墙,正常使用google是足够了,访问blogspot wikipedia等等也没有问题。

此方案的突出几个优点:

a:不需要在ssh主机上面安装软件,这样需要相对较少的ssh shell权限,很多免费的国外ssh主机就可以达到这个要求。

b:不需要在ssh主机上面开允许连入的端口,这样也可以减少对ssh 主机的需求,很多ssh主机只允许22端口连入时,我们这个方法也可以奏效,以上面的例子,3128端口是开设在你自己使用的client 机器的,8080端口是开设在代理服务器proxy.anywhere.com的,ssh主机上面并没有开设额外的端口,还是只有一个22端口。当然,ssh主机应该可以访问intenet的任何端口,这个应该不是问题的吧。

c:安全。开设在client的端口默认是只允许client本机访问的,同一局域网无法访问,除非你调整ssh client的设置。而且前面提到的,主机上面除了原先的22端口也不开设任何额外的端口,非常的安全。也避免了自己秘密安装的防火墙被其他人透露后带来流量激增的问题。

d:专门针对GFW的关键字过滤,这个方法同其他的绕开GFW主机方案比如在你购买的国外主机安装Phpproxy等等最大的不同和优点在于此。防火墙最难对付的地方并不是直接block主机地址,而是当访问国外主机返回的字符中有所谓敏感字词的时候给你来个链接重置,非常的讨厌。用普通的代理服务器(无论是国外的还是你自己安装的还是pkblogs.com等等这种类型的) 可以轻松的绕开GFW对block主机地址的屏蔽,但是当有敏感字词的时候还是难逃法眼。而这个方法,由于从你的client到ssh host之间是ssh密文传播的,GFW无能为力。

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代理,马赛克一下,hoho,第二行和第三行把gmail的pop.google.com和 smtp.google.com的端口加了ssh的套套分别映射到了本机的995和587端口,下面正在填写的那个是一个例子,把国外代理服务器的 anyproxy.abroad.com的8080端口加ssh套套映射到本地的5088端口,供浏览器作为代理服务器 localhost:5088使用。

分享到:
评论

相关推荐

    SSH Tunnel Manager 一款ssh隧道工具

    完全免费开源,软件直接在google 上即可下载,当 Mobaxterm 的开源版本不满足需求的时候,可以使用该软件作为替代。并且该软件很小,也才只有7M左右。

    怎样用putty设置SSH tunnel

    怎样用putty设置SSH tunnel 凡是不晓得SSH为何物的朋友可以略过,也可以google SSH开始了解它。这儿不重复了。

    ssh tunnel

    this is a free tunnel software, very portable, fast and eazy to use, please search the web for how to install, configure it.

    Laravel开发-laravel-ssh-tunnel-fixed

    在本文中,我们将深入探讨如何使用Laravel框架与`laravel-ssh-tunnel-fixed`工具来轻松地创建和维护SSH隧道。Laravel是PHP中一个非常流行的、功能强大的Web应用程序框架,它为开发者提供了丰富的功能和优雅的语法,...

    利用ssh tunnel链接mysql服务器的方法

    SSH Tunnel(SSH隧道)是一种安全的网络技术,用于在不安全的网络环境中提供加密的数据传输。在本场景中,我们探讨如何使用SSH Tunnel连接到MySQL服务器,尤其在只能通过内网地址访问数据库的情况下。 首先,我们...

    docker-ssh-tunnel:基于 Docker 的 SSH 隧道

    $ docker run -d -p 8080:8080 --name="tunnel" youssefkababe/ssh-tunnel 然后将您的浏览器或系统配置为使用您服务器的 IP 地址在端口 8080 上连接到您的 Socks 代理。 您可以像这样停止和启动隧道: $ docker ...

    k8s-ssh-tunnel-service:SSH隧道作为Kubernetes服务

    SSH隧道作为Kubernetes服务 创建一个Kubernetes服务/部署/ ConfigMap,以将SSH隧道作为... 下一步,您的Kubernetes集群应该有一个侦听端口3306的主机ssh-tunnel-service-mysql.svc.cluster.local 。 执照 麻省理工学院

    Jmeter解决SSH连接数据库

    ### JMeter通过SSH连接远程数据库解决方案 #### 项目背景与需求分析 在当前项目中,存在三台机器:远程数据库服务器、跳板机以及客户端。其中远程数据库服务器的IP地址为192.168.125.130,跳板机的IP地址为192.168...

    ssh-https-tunnel

    使用此文件配置ssh代理,配置git通过proxy访问github

    PyPI 官网下载 | django-ssh-tunnel-database-connector-0.3.5.tar.gz

    "django-ssh-tunnel-database-connector-0.3.5.tar.gz"是这个资源的文件名,通常在PyPI上发布的Python包会以tar.gz或whl格式提供,便于用户下载并安装到他们的Python环境中。 描述中提到的“资源来自pypi官网”,...

    SSH Tunnel 16.07 (Mac OS X).dmg

    SSH的的Port Forward,中文可以称为端口转发,是SSH的一项非常重要的功能。它可以建立一条安全的SSH通道,并把任意的TCP连接放到这条通道中。

    SSH Tunnel Manager-开源

    用于管理SSH隧道的GUI

    Doffen SSH Tunnel:管理SSH会话和隧道的层次结构-开源

    SSH终端,文件传输和隧道工具。 重点是在隧道内部运行隧道。 那必须跳过几台机器。 请参阅Wiki页面以获取文档。 https://sourceforge.net/p/doffensshtunnel/wiki/Home/

    Python编写实现SSH的反proxy Tunnel

    Python编写实现SSH的反proxy Tunnel 具体描述可以看我的博客

    KSTM - KDE SSH Tunnel Manager-开源

    使用Qt 4管理SSH隧道的GUI。

    RSTunnel ( Reliable SSH Tunnel )-开源

    RSTunnel(可靠的SSH隧道)使您可以在安全且加密的隧道中在两个网络之间的数据之间建立隧道。 它使用SSH连接两台计算机。 这将为您设置一个隧道,并确保其持续运行。

    ssh_tunnel

    ssh_tunnel

    ssh集成 ssh集成

    4. **远程服务器管理**:通过SSH,可以集成到终端模拟器(如Tmux、Screen)或者SSH客户端工具(如SSH Tunnel、MobaXterm),实现多会话管理和端口转发。 5. **容器化环境**:在Docker或Kubernetes中,SSH可用于容器...

    mac版本SSH+Tunnel_16.07_xclient.info--安装密码xclient.info

    mac版本SSH+Tunnel_16.07_xclient.info--安装xclient.info密码

Global site tag (gtag.js) - Google Analytics