在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)的更多相关文章

  1. 端口转发 Port Forwarding (一)

    0x00First 最近发现一些好用的端口转发工具和技巧,计划认真梳理一下 SSH.NC.LCX.EW.FRP 0x01 SSH隧道端口转发 目前利用SSH隧道(SSH tunneling)进行端口转 ...

  2. SSH高级应用(端口转发)

    转发自:http://www.cnblogs.com/sting2me/p/5167730.html 基于SSH协议的端口转发 [前言] 最近一直在使用ssh协议的端口转发(隧道)功能,完成对内网空透 ...

  3. 路由器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 ...

  4. iptables 通讯端口转接(Port Forwarding)

    是一种特殊的DNAT操作,其作用是让一部电脑(通常是防火牆)担任其它电脑的代理伺服器(proxy).防火牆接收外界网络接传给它自己的包,然后改写包的目的地位址或目的端口,使其像是要送到內部网路其它电脑 ...

  5. Linux 通过rinetd端口转发来访问内网服务

    可以通过端口映射的方式,来通过具有公网的云服务器 ECS 访问用户名下其它未购买公网带宽的内网 ECS 上的服务.端口映射的方案有很多,比如 Linux 下的 SSH Tunnel.rinetd,Wi ...

  6. Android adb端口转发调试助手Packet Sender

    相信大家做过安卓开发或者安卓自动化测试开发的都离不开adb这个Android Debug Bridge这个工具,该工具有个很重要的功能就是端口转发.比如你在目标安卓机器端建立了一个服务来处理获取当前界 ...

  7. SSH Tunnel扫盲(ssh port forwarding端口转发)

    SSH的的Port Forward,中文可以称为端口转发,是SSH的一项非常重要的功能.它可以建立一条安全的SSH通道,并把任意的TCP连接放到这条通道中.下面仔细就仔细讨论SSH的这种非常有用的功能 ...

  8. SSH隧道:端口转发功能详解

    SSH系列文章: SSH基础:SSH和SSH服务 SSH转发代理:ssh-agent用法详解 SSH隧道:端口转发功能详解 1.1 ssh安全隧道(一):本地端口转发 如下图,假如host3和host ...

  9. 不同路由器下远程ssh登录Beaglebone系统(通过路由器端口转发,配合花生壳的DDNS功能)

    使用场景: 一般家庭设备都是通过路由器中转连上互联网的,而且运营商给家庭宽带分配的IP地址也是动态的.随时可能变动的.所以当程序员们离开家之后,是很难直接和家里的设备进行交互的.但是通过TPLINK路 ...

随机推荐

  1. Homebrew 常用命令

    Homebrew 常用命令 Homebrew 介绍 Homebrew也称brew,macOS下基于命令行的最强大软件包管理工具,使用Ruby语言开发.类似于CentOS的yum或者Ubuntu的apt ...

  2. 2017年“嘉杰信息杯” 中国大学生程序设计竞赛全国邀请赛 Highway

    Highway Accepted : 122   Submit : 393 Time Limit : 4000 MS   Memory Limit : 65536 KB Highway In ICPC ...

  3. P1554 梦中的统计

    题目背景 Bessie 处于半梦半醒的状态.过了一会儿,她意识到她在数数,不能入睡. 题目描述 Bessie的大脑反应灵敏,仿佛真实地看到了她数过的一个又一个数.她开始注意每一个数码(0..9):每一 ...

  4. 小程序java解密

    <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk16< ...

  5. 第一个 swift 项目

    今天 学习了 一丢丢 swift,特此记录一下 ! 原来创建的时候 ,只要把 语言 由以前的Object-C改为Swift,变创建好了自己的swift工程 第一个简单的swift demo 上代码 i ...

  6. AJPFX:不用递归巧妙求出1000的阶乘所有零和尾部零的个数

    package com.jonkey.test; import java.math.BigInteger; public class Test6 { /*** @param args*  需求:求出1 ...

  7. Map集合的实现类

    Map的继承关系: Map接口的常用实现类: 1.HashMap.Hashtable(t是小写) HashMap不是线程安全的,key.value的值都可以是null. Hashtable是线程安全的 ...

  8. 【学习笔记】深入理解js原型和闭包(8)——简述【执行上下文】上

    什么是“执行上下文”(也叫做“执行上下文环境”)?暂且不下定义,先看一段代码: 第一句报错,a未定义,很正常.第二句.第三句输出都是undefined,说明浏览器在执行console.log(a)时, ...

  9. JVM内存区域参数配置

    转自:https://www.jianshu.com/p/5946c0a414b5 需要提前了解的知识点: JVM内存模型 JVM垃圾回收算法 下图是JVM内存区域划分的逻辑图   JVM内存区域逻辑 ...

  10. SQLServer · 最佳实践 · SQL Server 2012 使用OFFSET分页遇到的问题

    1. 背景 最近有一个客户遇到一个奇怪的问题,以前使用ROW_NUMBER来分页结果是正确的,但是替换为SQL SERVER 2012的OFFSET...FETCH NEXT来分页出现了问题,因此,这 ...