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
随机推荐
- zookeeper和dubbo中出现的问题
报错出现timeout关键字 解决:在服务发布时,添加timeout字段 <!-- 5.服务发布 --> <dubbo:service interface="com.sxt ...
- Hibernate总结以及在面试中的一些问题.
Hibernate总结以及在面试中的一些问题. 1.为什么要使用Hibernate开发你的项目呢?Hibernate的开发流程是怎么样的? 为什么要使用 ①.对JDBC访问数据库的代码做了封装,大 ...
- web(四)html表单类标签
表单类标签 操作者用于输入信息,并将信息提交给服务器的标签集合. 表单标签介绍 form标签:表单元素(其余标签)标签的容器标签 input标签:用于用户信息输入的标签. button标签:按钮标签. ...
- 2.11 alert\confirm\prompt
2.11 alert\confirm\prompt 前言 不是所有的弹出框都叫alert,在使用alert方法前,先要识别出到底是不是alert.先认清楚alert长什么样子,下次碰到了,就可以用 ...
- ELF文件加载与动态链接(二)
GOT应该保存的是puts函数的绝对虚地址,这里为什么保存的却是puts@plt的第二条指令呢? 原来“解释器”将动态库载入内存后,并没有直接将函数地址更新到GOT表中,而是在函数第一次被调用时,才会 ...
- [error]OpenCV Error: Assertion failed (ssize.width > 0 && ssize.height > 0) in resize, file modules/imgproc/src/resize.cpp, line 3289
error OpenCV Error: Assertion failed (ssize.width > && ssize.height > ) terminate call ...
- C#语法-虚方法详解 Virtual 虚函数
虚方法 / Virtual 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享. ...
- 如何上传本地项目到github
github作为git的代码托管,而许多大神都在上面托管自己的开源项目.现在,我来记录一下我是如何将本地项目上传到github上. 一.安装git工具(具体方法见百度) 二.配置全局 三.创建.ssh ...
- Docker第一个应用:Hello World
Docker应用:Hello World 前言: 最近学习了Docker相关技术点,国内关于Docker的资料大多是基于Linux系统的,但是我对Linux又不熟(实际上没用过,掩面哭笑.Jpg). ...
- Windows 10瘦身
Windows操作系统功能越来越强大,同时体型也越来越臃肿.安装盘没有60Gb都不敢安装.Windows10 安装最低磁盘要求20G ====瘦身基础篇,适合任何用户:(可见目录,简单迁移)1. 安装 ...