OpenSSH高级功能之端口转发(Port Forwarding)
在RedHat提供的系统管理员指南中提到OpenSSH不止是一个安全shell,它还具有X11转发(X11 Forwarding)和端口转发(Port Forwarding)的功能。X11功能一般用于通过ssh连接到服务器端的图形界面,像远程桌面一样使用Linux服务器主机,客户端只要能访问服务器端并且服务器端已经安装了图形界面管理器(如GNOME、KDE、XFCE等)就可以通过SSH的X11转发功能实现远程桌面。
本文重点讲的是OpenSSH的另一个高级功能端口转发(本地端口转发,Local Port Forwarding),并着重列举一下具体有哪些较好的应用场景。对OpenSSH端口转发原理不怎么了解的其实可以参考代理服务器的功能,比如它和Nginx或Apache的网站转发器(代理)是一样的。它能实现客户端A通过访问服务器端B(执行SSH端口转发命令),从而通过服务器端B的某一个指定端口访问服务器端C提供的服务。
需求:
客户端A要访问服务器C所提供的服务,但客户端A并不能直接访问到服务器C
使用条件:
1.客户端A和服务器B之间可以互相访问,服务器B与服务器C之间可以互相访问,而客户端A与服务器C之间能否互相访问均可。
2.服务器B上需要运行SSH服务,并能支持Port Forwarding(支持端口转发,一般默认都支持)
步骤:
客户端A或服务器B上运行ssh客户端,执行命令“ssh -L 172.16.172.7:3389:172.16.172.33:3389 172.16.172.7”,其含义是:
(1)SSH到172.16.172.7
(2)172.16.172.7:3389:172.16.172.33:3389 表示客户端A可以通过连接172.16.172.7(服务器端B)的3389连接172.16.172.33(服务器端C)的3389端口
(3)如果第一个172.16.172.7设为空,即把172.16.172.7:3389:172.16.172.33:3389 变为3389:172.16.172.33:3389 ,则172.16.172.7(服务器端B)默认只监听127.0.0.1这个本地环回地址,失去了满足需求的意义。
(4) 注意,如果客户端A上的SSH客户端不支持这样执行(Linux系统自带的openssh-clients包提供的ssh都支持),则可以参考一些SSH客户端软件(如PUTTY、Xmanager的Xshell)的具体设置,或者直接在服务器B上执行上述命令
图1.Server B SSH自己,打开Port Forwarding
图2.Client A 远程桌面连接到Server B
图3:Server B中已经建立好的连接
图4:Server C中已经建立好的连接
图5.上述步骤的整体解释,上述步骤中采用的是第二种连接方式,即SSH Server B SSH到自己身上,建立好端口转发通道
应用场景:
1.内网穿透或者防火墙穿透。例如防火墙上映射或开放一台Linux主机的SSH端口,防火墙外的主机通过SSH到这台Linux主机,通过这台Linux主机就能访问这台LInux主机所能访问的一切主机(服务),实现远程代理访问。
2.安全规则穿透。与第一条道理相同,如果除了这台Linux主机以外的所有主机都不能访问,那么就可以通过这台Linux主机进行访问。
例子:
客户的数据中心中有一台具有公网IP地址A的CentOS6虚拟机H2,还有多台没有公网IP地址但有和CentOS6虚拟机H1相同内网网段和安全规则的IP地址B的虚拟机H2,那我在客户的数据中心外面即可通过这台CentOS6虚拟机H1访问虚拟机H2,实现了H2的无公网IP地址的远程访问(远程代理访问)。
原文地址:http://www.tuicool.com/articles/RNnmEz
OpenSSH高级功能之端口转发(Port Forwarding)的更多相关文章
- 端口转发 Port Forwarding (一)
0x00First 最近发现一些好用的端口转发工具和技巧,计划认真梳理一下 SSH.NC.LCX.EW.FRP 0x01 SSH隧道端口转发 目前利用SSH隧道(SSH tunneling)进行端口转 ...
- SSH高级应用(端口转发)
转发自:http://www.cnblogs.com/sting2me/p/5167730.html 基于SSH协议的端口转发 [前言] 最近一直在使用ssh协议的端口转发(隧道)功能,完成对内网空透 ...
- 路由器port触发与转发---Port Forwarding & Port Triggering
What is Port Triggering? If you have not read my explanation of port forwarding do so now. You can f ...
- iptables 通讯端口转接(Port Forwarding)
是一种特殊的DNAT操作,其作用是让一部电脑(通常是防火牆)担任其它电脑的代理伺服器(proxy).防火牆接收外界网络接传给它自己的包,然后改写包的目的地位址或目的端口,使其像是要送到內部网路其它电脑 ...
- Linux 通过rinetd端口转发来访问内网服务
可以通过端口映射的方式,来通过具有公网的云服务器 ECS 访问用户名下其它未购买公网带宽的内网 ECS 上的服务.端口映射的方案有很多,比如 Linux 下的 SSH Tunnel.rinetd,Wi ...
- Android adb端口转发调试助手Packet Sender
相信大家做过安卓开发或者安卓自动化测试开发的都离不开adb这个Android Debug Bridge这个工具,该工具有个很重要的功能就是端口转发.比如你在目标安卓机器端建立了一个服务来处理获取当前界 ...
- SSH Tunnel扫盲(ssh port forwarding端口转发)
SSH的的Port Forward,中文可以称为端口转发,是SSH的一项非常重要的功能.它可以建立一条安全的SSH通道,并把任意的TCP连接放到这条通道中.下面仔细就仔细讨论SSH的这种非常有用的功能 ...
- SSH隧道:端口转发功能详解
SSH系列文章: SSH基础:SSH和SSH服务 SSH转发代理:ssh-agent用法详解 SSH隧道:端口转发功能详解 1.1 ssh安全隧道(一):本地端口转发 如下图,假如host3和host ...
- 不同路由器下远程ssh登录Beaglebone系统(通过路由器端口转发,配合花生壳的DDNS功能)
使用场景: 一般家庭设备都是通过路由器中转连上互联网的,而且运营商给家庭宽带分配的IP地址也是动态的.随时可能变动的.所以当程序员们离开家之后,是很难直接和家里的设备进行交互的.但是通过TPLINK路 ...
随机推荐
- python实现基数排序
# 基数排序有着局限性,只能是整数,# 排序的时候要先排后面一个条件的(多条件排序)#如本例中,先从个位开始排起# 多关键字排序# 从低关键字开始排序 # @File: radix_sort #### ...
- 浅谈算法——KMP
KMP是啥?KMP当然是KMPlayer的简称啦 KMP算法是用来解决字符串匹配的一种算法,由D.E.Knuth.J.H.Morris和V.R.Pratt同时发现,然后它可以用来干啥呢?我们上个例题: ...
- PTA天梯赛训练题L1-064:估值一亿的AI核心代码(字符串模拟)
Update:smz说regex秒过Orz,yzd记在这里了. 听说今年天梯赛有个烦人的模拟,我便被队友逼着试做一下……一发15,二发20.记一记,要不然枉费我写这么久…… 自己还是代码能力太菜了,校 ...
- AJPFX总结面向对象中成员变量和成员方法的定义
//面向对象中成员变量和成员方法的定义格式:========================================= 成员变量定义在类中方法外,可以被该类中所有方法使用. ...
- JDBC ResultSet分析
JDBC1.0 .JDBC2.0 .JDBC3.0 中分别用以下方法创建Statement . JDBC1.0 : createStatement() JDBC2.0 : createStatemen ...
- ES5函数新增的方法(call、apply、bind)
1.call()的使用<script type="text/javascript"> var obj1 = { name:'bob', fn:function(){ c ...
- Jmeter官网文档翻译
Jmeter目录 入门 1.0概述 测试计划建设 负载测试运行 负载测试分析 开始吧 1.1要求 1.1.1 Java版本 1.1.2操作系统 1.2可选 1.2.1 Java编译器 1.2.2 SA ...
- SQL (一)定义变量以及变量赋值
1.定义变量:declare @name varchar(20) 用declare定义一个名字为name的字符串类型的变量,变量前面需要加@ 2.为变量赋值:set @name = '%奥迪%' , ...
- 50个Bootstrap扩展插件
Bootstap这个框架本身已经包含了开发网页的众多要素,包括了常用的工具以及扩展组件,如果你在开发页面时觉得在某些方面还不够的话,不妨看看最新收集的50个Bootstrap扩展插件,这些插件在我们平 ...
- pagehelper 分页
分页jar包: <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pa ...