一种通过SSH协议构造隧道达成数据加密传输的方法

 更新时间:2015年01月06日 15:33:35   投稿:mdxy-dxy  
这篇文章主要介绍了一种通过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长链接,这样就可能达到数据的转发及数据的加密传输。
怎么样?是不是非常赞~

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客户服务器,给客户解决问题!!!

相关文章

  • 将 PFX,JKS 证书转换为 PEM 格式方法

    将 PFX,JKS 证书转换为 PEM 格式方法

    这篇文章主要介绍了将 PFX,JKS 证书转换为 PEM 格式方法,需要的朋友可以参考下
    2024-01-01
  • Tornado Web服务器中处理空白字符的解决方案

    Tornado Web服务器中处理空白字符的解决方案

    这篇文章主要介绍了Tornado Web服务器中处理空白字符的解决方案,本文通过修改Tornado源码解决这个问题,需要的朋友可以参考下
    2015-01-01
  • 服务器SVN搭建图文安装过程

    服务器SVN搭建图文安装过程

    这篇文章主要介绍了服务器SVN搭建图文过程,本文通过图文并茂的形式给大家介绍详细安装过程,需要的朋友可以参考下
    2022-06-06
  • 磁盘阵列初步了解图文教程

    磁盘阵列初步了解图文教程

    闲来无事,组了个raid 0,感觉还不错,速度有明显提高,加载游戏和启动程序速度有所改善,一般服务器用的多
    2013-06-06
  • Tomcat目录结构详细介绍

    Tomcat目录结构详细介绍

    今天和大家一起聊聊关于Tomcat目录结构以及各个目录,相关文章的具体作用
    2018-10-10
  • 阿里云ECS服务器轻松搭建ThinkPHP环境

    阿里云ECS服务器轻松搭建ThinkPHP环境

    本文指导在阿里云ECS CentOS 7.9上部署ThinkPHP框架,涉及安装PHP、Composer、Apache,配置虚拟主机解决URL问题及目录权限设置,确保项目正常运行,感兴趣的朋友跟随小编一起看看吧
    2025-08-08
  • Nodejs创建TCP服务器 - king0222

    Nodejs创建TCP服务器 - king0222

    这篇文章主要介绍了Nodejs创建TCP服务器 - king0222的相关资料,需要的朋友可以参考下
    2015-09-09
  • 阿里云ECS服务器安装Apache的步骤

    阿里云ECS服务器安装Apache的步骤

    本文介绍在阿里云ECS CentOS7.9服务器上安装Apache的步骤,包括使用yum安装、开放80端口、配置主文件httpd.conf及默认页面index.html,最后通过创建ding用户并调整权限实现对网站目录的访问与修改,感兴趣的朋友跟随小编一起看看吧
    2025-08-08
  • iisapp.vbs iis pid了解对应的网站或应用池

    iisapp.vbs iis pid了解对应的网站或应用池

    有时候突然发现某个w3wp.exe进程,占用较大的自由,想看看是哪个网站,然后再解决问题。下面是具体的方法。
    2009-10-10
  • Webpack部署本地服务器的方法

    Webpack部署本地服务器的方法

    webpack-dev-server 是一个用于开发环境的 Web 服务器,它集成了 Webpack,并提供了实时重新加载和热替换等功能,以下是一个简单的 webpack-dev-server 配置和使用示例,感兴趣的朋友跟随小编一起看看吧
    2024-03-03

最新评论