SSH实现隧道功能穿墙
Putty和SSH tunnel
目前寻求FQ的方式无非就几种:
- 寻找web代理(这个可以进我放置的在线代理进行测试)
- 自行寻找http/sock5代理(这个可以去网上搜索代理ip)
- vpnFQ(目前可以自行架设vpn服务器,或者用外国的免费vpn服务,可见:免费实用简单的国外VPN-UltraVPN)
- ssh 加密隧道转发sock5代理(本文所提)
原理:
SSH客户端连接SSH服务器采用的是22号端口。然后在这个通过22号端口建立的连接上,客户端和服务器可以互相进行通信,这便是SSH的22号端口的一般功能。
除了上面的SSH连接的一般功能之外,SSH服务器还支持另外一种神奇的通信方式,就是在SSH连接上承载另外端口的连接。这个功能读起来比较复杂,其实很简单。
比如,http服务器开放80端口来让客户连接,客户通过与服务器上的80端口直接建立一个通道用来与服务器进行http通信。这也是http通信的一个最最普遍的形式。
但是,我们还可以使用SSH服务器,不使用直接连接的方式,而是用另外一种比较怪异的方式来和服务器建立起80端口的连接通道。
客户端不直接跟服务器的80端口建立一个连接通道,反而是和服务器的22端口建立一个连接通道,但是在这个22端口的连接通道中,建立一个子连接通道,这个子连接通道是用来访问服务器的80端口。也就是说,在22号端口上建立的连接,传输的数据不是22号端口本来的数据,而是与服务器的80端口通信的一整条的连接通道。
在与服务器的22端口建立的大的通道中,又包裹了一个与服务器的80端口的小连接通道。
SSH的这个功能就是所谓的SSH隧道,也即SSH Tunnel.使用“隧道”这个词还是很贴切的,因为数据不是直接跟服务器建立连接,而是在已经建立号的22号端口的隧道中建立跟服务器的连接。
这意味着,我们能通过连接主机A的22号端口,所实现的功能是访问另外一台主机B的80端口。实现穿墙
所需的工具
- 一个SSH客户端软件,用来连接SSH服务器的,一般我们使用putty软件
- 一个能够设代理服务器的网络浏览器基本上所有的浏览器都满足这个要求,firefox,chorme,IE….
- 一个SSH服务器。并不是所有的SSH服务器都能够让我们用来FQ,还需要满足三个条件:
- 这个SSH服务器能够允许我们连接,或者说这个SSH服务器本身并没有被墙屏蔽掉,而导致我们连访问这个SSH服务器都不可能,那么说什么都是白搭了。
- 这个SSH服务器能够连接上墙外的世界,如果它不能连接墙外的世界,那么我们既是用SSH隧道技术连接上它,也没辙。(一般来说,只要这个SSH服务器是在国外的,那么就都是可以用来FQ,同样的,国内的提供SSH连接的服务器,比如unix-center,就不能用来FQ,因为服务器本身就是在墙内)
- 这个服务器允许客户端,也就是我们,进行SSH隧道(ssh tunnel)的操作,很多国外的服务器,虽然提供ssh接入功能,但是其不提供ssh tunnel服务,那么这些服务器对FQ来说,还是废柴。
但是欣喜的是,我们找到了一个同时满足上面三点要求的SSH服务器提供商,而且是免费的。就是www.cjb.net.使用这个网站提供的ssh功能,就能够轻松进行FQ作业了!
技术优势
使用SSH隧道方法的技术优势在于,只要22号端口没有被屏蔽,我们就能够利用这个22号端口作为隧道,开辟出各种天地,用它来连接http,ftp,qq,msn等。
这在公司灰常的有用,公司内部为了管理员工的网络使用,很多的端口都被屏蔽了,qq之类的热门端口都会被屏蔽。有了SSH隧道,所有被屏蔽的端口,我们都能够找回来!
还有一个优势就是SSH建立的连接都是经过加密的,所以,保密性会比较好一点
注意,你的终端期间是不能关的,关了后代理就失效了,如果想关终端的话,就要用putty里面的plink.exe,以命令行方式运行 plinkusername@hostname -C -D 127.0.0.1:8088(username就是你的登录帐号,hostname是服务器的地址),后面的8088是你自己定义的端口号。-C 表示允许压缩。-D 表示基于SOCKS的动态端口转发。根据提示,输入你的密码。不要关闭这个窗口,否则通道就关闭了。为了避免因为过久没有数据传输而连接被中断,你可以在窗口输入一条这样的指令,让它保持连接:ping google.com -i 60 (-i 60 表示每隔 60 秒才 ping 一次)。
在使用SSH做代理的时候,发现一个问题,就是其他所有网站都能打开,但Youtube和http的Facebook打不开。 后来发现,原来某些网站的域名会被DNS劫持,使用SSH代理也无法解决,必须更换DNS服务器。 解决的方法是,域名不使用本地解析,而使用服务端来解析,对于Firefox来说,在 about:config 改成 network.proxy.socks_remote_dns=true 就可以了。
SSH实现隧道功能穿墙的更多相关文章
- 图解SSH隧道功能
SSH能够对SSH客户端与服务器端之间的网络通信提供加密功能,而且SSH的端口转发功能还能将其它TCP端口的网络数据通过SSH连接来转发,并且自动提供相应的加密和解密服务,这一过程也被称为“隧道”(t ...
- ssh端口转发功能
一.SSH 端口转发能够提供两大功能: 1.加密SSH Client 端至SSH Server 端之间的通讯数据 2.突破防火墙的限制完成一些之前无法建立的TCP 连接 (隧道功能) 二:SSH端口 ...
- 利用SSH反向隧道,连接内网服务器
前言 公司有一台文件服务器(内部使用,无外网IP),上面主要安装了SVN服务,用来存储和共享各部门的文档,因为都是内网,直接远程(mstsc)上去就可以方便维护,但最近公司租了新的办公室,部分员工被分 ...
- 在Mac OSX下使用ssh建立隧道(在Windows下建立隧道可以使用putty,其间会用到ppk文件)
在Windows下建立隧道可以使用putty,其间会用到ppk文件.在Mac OSX下,同样的功能可以用ssh命令实现.具体是: ssh -D 8088 -Nf user@ip -i myppk.ss ...
- SSH, 整合分页功能,连带DAO经典封装
任何一个封装讲究的是,使用,多状态.Action: 任何一个Action继承分页有关参数类PageManage,自然考虑的到分页效果,我们必须定义下几个分页的参数.并根据这个参数进行查值. 然 ...
- 【Linux】ssh建立隧道tunnel连接到内网设备
root@192.168.1.105 建立隧道: ssh -l root -N -f -R 9103:127.0.0.1:2222 work@11.11.13.17 解析:把本地127.0.0.1:2 ...
- 两步建立 ssh 反向隧道
因为需要在寝室访问实验室的内部网络,刚好自己购买了阿里云,因此,可以远端干活了,mark下方法: 第一步:在内网的服务器上,使用ssh 命令建立反向隧道 publicUserName@publicIp ...
- python实现ssh及sftp功能
1.在Linux上我们通过scp命令实现主机间的文件传送,通过ssh实现远程登录 ,比如 我们经常使用的xshell远程登录工具,就是基础ssh协议实现window主机远程登录Linux主机 下面简单 ...
- linux命令--ssh创建隧道
工作应用场景 在工作中,总会连接到各种不能直接访问的环境,所以我们必须使用ssh隧道进行访问. 原理简介 ssh隧道:https://www.jianshu.com/p/20600c91e656
随机推荐
- mybatis的工作原理
MyBatis的框架架构 看到Mybatis的框架图,可以清晰的看到Mybatis的整体核心对象,我更喜欢用自己的图来表达Mybatis的整个的执行流程.如下图所示: 原理详解: MyBatis应用程 ...
- ArcGIS中的数据连接问题——数据类型不统一
博主在研究空间数据分布的时候经常会用到 ArcGIS 进行空间数据可视化.但是有时候会由于数据类型不统一而无法将 csv 中的数据连接到底图上.比如在底图中的数据是字符串格式,而 csv 中是数字格式 ...
- scala quick check
Scala 特性 面向对象特性 函数式编程 Scala也是一种函数式语言,其函数也能当成值来使用.Scala提供了轻量级的语法用以定义匿名函数,支持高阶函数,允许嵌套多层函数,并支持柯里化.Sca ...
- asm磁盘组,asm磁盘状态学习
说明:在数据库中巡检,发现,数据库某个磁盘组状态为mount,其余磁盘组均为CONNECTED状态,排除是否异常 文档流程: 1.实际环境查询校验 2.官方文档视图中对磁盘组,磁盘状态的解释说明 3. ...
- [LeetCode&Python] Problem 455. Assign Cookies
Assume you are an awesome parent and want to give your children some cookies. But, you should give e ...
- PTA——四舍五入
PTA 7-18 出租车计价 (15 分) #include<stdio.h> int main() { double s,w; int t; scanf("%lf %d&quo ...
- Blender 曲线操作
Curve (Bézier Versus NURBS)https://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro/Curve_and_Path_Mode ...
- 【HDOJ1217】【Floyd求最长路】
http://acm.hdu.edu.cn/showproblem.php?pid=1217 Arbitrage Time Limit: 2000/1000 MS (Java/Others) M ...
- 理解--->Java中的值传递&引用传递
转自:http://url.cn/5tL9F5D 值传递和引用传递 值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际 ...
- IDEA 热部署- 自动编译设置
原文:https://www.cnblogs.com/TechSnail/p/7690829.html && https://blog.csdn.net/qq_3129357 ...