一种通过SSH协议构造隧道达成数据加密传输的方法_服务器其它

OpenSSH在实现时,给我们提供一个简单好用的Geek功能——端口转发。说是一个功能,其实是两个用法,一称之为本地端口转发,一称之为远程端口转发。

SSH端口转发其实就是类似iptables的端口数据转发功能,也即是将请求在某一个指定端口的数据,转发到另外一个指定的端口上。呵呵,很抽象啊~

下面说具体的用法:
下文的两个注解:本地:指执行SSH命令的发起端;远程:SSH命令的连接端。执行命令的环境要基于*nix或者是可以实现SSH命令效果的工具(如putty相关),服务所在的环境不限服务类型、不限操作系统。

SSH端口转发之一:本地端口转发
本地端口转发是指通过SSH命令,在本地服务器Listen一个端口(如8000),然后将访问这个端口的数据请求,转发到远程服务器的某一个服务端口上(如3306)。
有人也许会说废话,难道我不能直接连接么?还用你这个?
其实这个有两个场景也许你没有想到:1、当需要数据加密传输时;2、当服务端口只能通过跳板机不能直接访问时,如有些主机是没有外网IP的。这两个场景,直接连接是不可以的。

举例说明:
假设我有本地虚拟机host1(192.168.1.100)工作机器,服务器host2(54.100.1.2)用作跳板机,服务器host3(10.0.0.9)上面部署得有MySQL服务(端口为3306)。host3是对外不开放。host1与host2可以通过ssh直连。host2与host3之间局域网,防火墙互通。
当我在host1上面的web服务器想访问host3上面的MySQL服务时,直接访问是肯定不行的。因为不通。此时,我们就可以通过SSH的端口转发功能实现。
在host1上面执行如下命令:

#ssh -CNfg -L 8000:10.0.0.9:3306 dbfen@54.100.1.2

然后输入host2上dbfen账号的SSH密码。此时,我们在host1上,通过访问本地的192.168.1.100:8000端口,即是访问的host3上面的3306端口。host3上的MySQL授权,针对host3(10.0.0.9)进行授权即可。
因为是通过的SSH长链接,这样就可能达到数据的转发及数据的加密传输。
怎么样?是不是非常赞~
PS:大家用的myentunnel翻墙工具,就是用的plink工具来实现的本地端口转发~~~

SSH端口转发之二:远程端口转发
远程端口转发是指通过SSH命令,在远程服务器Listen一个端口(如8000),然后将访问这个端口的数据请求,转发到本地的某一个服务端口上(如3306)。
跟本地端口转发刚好反着~

举例说明:
假设我有本地虚拟机host1(192.168.1.100)工作机器,服务器host2(54.100.1.2)用作跳板机,公司开发机host3(192.168.117.100)上面部署得有MySQL服务(端口为3306)。host3是开发机,无公网IP,可访问外网。host1与host2可以通过ssh直连。host3可以直连上host2。
现在我在家里,当我想访问公司的开发机时,开发、测试时,抠门的老板又没有部署VPN,绝逼是不可能的。。。是的。。。不可能的。。。可是该死的老板(小编别让DBfen老板看见了哈)又要求解决问题~~~泪奔啊~~~苦逼的攻城狮~~~肿么办~~~难道要我半夜爬去公司吗??????
天不灭我!我有SSH远程端口转发!
在离开公司前,在公司开发机host3上执行命令如下:

#ssh -CNfg -R 8022:192.168.117.100:22 dbfen@54.100.1.2

然后输入host2上dbfen账号的SSH密码。此时,我在家、我在出差、我在飞机上、我在海上,只要我能够上网、能够上host2,哈哈,直接SSH去host2,然后在host2上,输入下面的命令:

# ssh root@127.0.0.1 -p 8022

输入host3上root账号的SSH密码~开发机,我来啦~~~老板,我正在解决问题,我不用去公司的,我可以很快解决问题的啦~~~

有没有很开心?
额,等等,你这个,还有一点儿问题啊,我host2服务器上面还得开放host2的SSH端口,host2上面还有重要数据~现在黑阔蝈蝈好凶的~好危险的哟~~~亲,有解决办法,附加一条我们的本地端口转发马上解决问题,在host2上执行下面的命令

# ssh -CNfg -L 8024:127.0.0.1:8022 dbfen@54.100.1.2

然后输入host2上dbfen账号的SSH密码。以后在家里、在海里、在天上,我只需要直接访问54.100.1.2:8024即可自动访问上host3上面的22端口,不再需要再登陆上host2(可以把host2上除8024外的所有端口全封了),然后登陆host3了~~~

怎么样,有没有很屌?咦,感觉这个功能在哪儿见过啊~这个东西我在哪儿见过。没错,花生壳代理!这就是不同实现啦!

下班回家~~~偶们也可以在家工作了~~~
等等…
既然大家这么嗨,我再给大家说一个应用场景,出过差的蝈蝈,有没有遇到这样的情况:当某个功能或者东西你不熟悉时,你需要求助于相关同事,而客户的服务器又不让远程登陆,这个同事在遥远的天边。。。咋办呢,让丫飞过来?估计老板不让。哈,我有QQ协助~~~
哈~你真2,QQ远程协助也是人用的么?延迟得想让人发疯~
有办法的~
带上你的笔记本电脑(host1),去客户的机房,一根网线接入客户的服务器(host2),wifi连接上外网,找一台临时的外网服务器(host3),操作如下:
在host3上面执行如下命令:

# ssh -CNfg -L 8022:127.0.0.1:8021 root@127.0.0.1

输入host3的root密码
在host1上面执行如下命令:

# ssh -CNfg -R 8021:host2:22 root@host3

输入host3的root密码
然后让同事丫的赶紧连接host3:8022客户服务器,给客户解决问题!!!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索ssh
数据加密传输
ssh连不上linux服务器、ssh服务器、ssh登陆远程服务器、ssh跳板机连接服务器、windows ssh服务器,以便于您获取更多的相关知识。

时间: 2024-10-02 11:38:06

一种通过SSH协议构造隧道达成数据加密传输的方法_服务器其它的相关文章

无需密码通过ssh执行rsync来同步文件的方法_服务器其它

1.通过ssh执行rsync(需要密码) 通过ssh帐户(需要密码)执行rsync,将文件同步镜像到远程服务器. 下面这个例子将本地的/home/ramesh同步到远程目录/backup/ramesh(服务器地址192.168.200.10). 执行以下操作时,服务器将会提示需要用户使用密码登录. 复制代码 代码如下: rsync -avz -e ssh /home/ramesh/ ramesh@192.168.200.10:/backup/ramesh/ 2.使用ssh-keygen生成密匙

服务器重启不能启动的几种常见的解决方法_服务器其它

1.当系统启动显示操作系统列表时, 按F8 出现高级启动选项; a. Safe mode: 只加载基本的服务和驱动. 用于解决安装了额外的硬件驱动或软件后,导致系统不能正常启动的情况.选择Safe mode,若能进入操作系统,卸载额外的驱动或软件. b.Last known good: 启动上一次的成功配置. 用于解决对系统的驱动,及服务进行了错误的配置后导致系统不能引导的情况.选择Last known good 可以恢复到上一次正常登录时的配置. c.VGA Mode: 使用标准VGA模式启动

解决IIS的Server Application Error的2种方法_服务器

方法1:  ------------------------------------   Server Application Error   The server has encountered an error while loading an application during the processing of your request. Please refer to the event log for more detail information. Please contact 

SSH协议详解(转)

转发的http://blog.csdn.net/macrossdzh/article/details/5691924 很透彻啊,学习了 一.什么是SSH   SSH是英文Secure Shell的简写形式.通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗.使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度.SSH有很多功能,它既可以代替Telnet,又可以为FTP.Pop.甚至为P

SSH2.0编程 ssh协议过程实现(转)

  SSh协议: 全称为Secure Shell,即很安全的shell,主要目的是用来取代传统的telnet和r系列命令(rlogin,rsh,rexec等)远程登录和远程执行命令的工具,实现远程登录和远程执行命令加密,防止由于网络监听而出现的密码泄露,从而对系统构成威胁.(telnet协议采用明文传送密码,数据传送过程中也不加密) ssh协议目前有ssh1 和ssh2,其实现在我们主要使用的也是openssh.ssh不仅在登录过程中对密码进行加密传送,而且在登录后执行的命令的数据也进行加密,这

Red Flag Asianux Server 3系统管理:SSH协议

SSH(Secure SHell的缩写)是一种用在基于客户机 /服务器方式的两种系统间完成通讯,并http://www.aliyun.com/zixun/aggregation/18736.html">允许用户登录到服务器主机上进行远程控制的协议.与 ftp.telnet等其他远程通信协议不同的是, ssh对登录会话进行加密,使入侵者无法收集加密的口令. SSH是用来取代原来的那些古老的.不安全的用来登录远程主机的安全终端应用程序,例如 telnet. rsh.一个被称作 SCP的程序取代

java实现ssh协议远程通过中间服务器连接跳转第三方服务器

问题描述 java实现ssh协议远程通过中间服务器连接跳转第三方服务器 java实现ssh协议远程通过中间服务器连接跳转第三方服务器,目前只能连接到中间服务器 ,但是连接第三方服务器怎么实现 求解

Java实现 SSH 协议的客户端登录认证方式

背景 在开篇之前,让我们先对 SSH 协议有个宏观的大致了解,这样更有利于我们对本文的加深了 解.首先要提到的就是计算机网络协议,所谓计算机网络协议,简单的说就是定义了一套标准和规则,使得不 同计算机之间能够进行正常的网络通信,不至于出现在一台机器上发出的指令到另一台机器上成了不可认的乱 码,SSH 就是众多协议的其中之一.经典的七层 OSI 模型(Open System Interconnection Reference Model )出现后,大大地解决了网络互联的兼容性问题,它将网络划分成服

介绍几种常见通讯协议中与安全控制相关的标准规范

本文首先介绍了几种常见通讯协议中与安全控制相关的标准规范,以便读者理解 Message Broker 安全管理器的底层工作机制:然后介绍了 Message Broker 安全管理器的功能,如何通过创建安全概要文件来定制化安全控制选项,以及如何为特定消息流启用不同的安全设置.在文章的最后,作者还根据以往的项目经验,提到在实际应用中应当了解和注意的几个事项. 传输协议及安全控制 WebSphere Message Broker(简称 Message Broker)作为企业级的整合中间件和服务总线,提