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
随机推荐
- 【Python】UI自动化-1
一.安装selenium和环境配置 1 pip install selenium 2 三个驱动文件放到d:盘根目录 3 安装火狐版本33 4 安装插件:selenium ide\firebug\fir ...
- 【Python】socket编程-3
. SocketServer最简单的使用方法: () 创建一个Handler类,继承自BaseRequestHandler,重写其handle(),在该方法中完成对请求的处理. () 实例化一个Ser ...
- 神州数码RIP协议认证
实验要求:掌握RIP协议的简单认证及MD5认证 拓扑如下 简单认证 R1 enable 进入特权模式 config 进入全局模式 hostname R1 修改名称 interface s0/1 进入 ...
- 单点登录系统---SSO
1.------------------SSO介绍--------------------------------- 有什么卵用?搞什么飞机的? 大家看看这个图,一个系统是没有问题.如果是分布式的系统 ...
- 【CSP】字符与int
[转自https://yq.aliyun.com/articles/19153] WIKIOI-1146 ISBN号码 光仔december 2014-03-01 16:20:00 浏览479 评 ...
- C#语法-虚方法详解 Virtual 虚函数
虚方法 / Virtual 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享. ...
- 变量与算术表达式 - C程序设计语言
#include <stdio.h> int main() { float fahr,celsius; float lower,upper,step; lower = 0; upper = ...
- nmon使用命令
nmon使用命令 启动nmon后, c 查看CPU监控的窗口 mV 查看内存和虚拟内存 V是大写 ndt 查看网络.磁盘和虚拟进程 q ...
- LSOF查看linux中文件打开情况
如何查看linux中文件打开情况 前言 我们都知道,在linux下,“一切皆文件”,因此有时候查看文件的打开情况,就显得格外重要,而这里有一个命令能够在这件事上很好的帮助我们-它就是lsof. lin ...
- 构建工具 buildtool
一.什么是build tool? 构建工具是从源代码自动创建可执行应用程序的程序.构建包括将代码编译,链接和打包成可用或可执行的形式.在小项目中,开发人员通常会手动调用构建过程.这对于较大的项目来说是 ...