引言

本篇博客介绍端口转发的知识,并详细阐述操作和设置步骤。这是因为在实际工作中,会有很多企业从安全的角度考虑,为线上或重要的服务器设置一个跳板机(堡垒机),避免远程开发人员直接操作,是企业应用开发中的重要保护措施。

一、端口转发

端口转发(Port Forwarding),或者叫SSH隧道(SSH Tunnel),是运维人员相关操作的必修课,也是开发人员必须要了解的知识。以下引用百科中的一段概述:

端口转发是SSH 为网络安全通信使用的一种方法。是把一个网络端口从一个网络节点转发到另一个网络节点上的行为。这种行为使得一个外部用户从外部经过一个被激活的NAT路由器到达一个在局域网中的IP的端口上。

用网络拓扑图来解释就是这样:

可见上图中的虚线连接了本地服务器与远程服务器,但这条虚线实际上是通过端口转发实现的,实际传输的数据都是通过跳板机来进行传输的。

二、端口转发的设置

2.1 场景描述

开发人员配置端口转发的目的一般就是需要登录远程的受跳板机(堡垒机)保护的目标服务器,服务器上可能有项目的部署文件,或者是数据库。

我们来假设一种典型的场景:

我们的数据库是在一个受保护的远程服务器上启动的,本地代码的运行也需要依赖此数据库的查询。我们不仅要通过Navicat等可视化界面连接数据库,更要通过程序进行数据库的连接和访问。因此,我们通过端口转发来实现这个要求。

2.2 小知识

1、通过免费的终端软件,可以实现端口转发的设置。所有的终端操作软件都支持端口转发功能,它们有XShell、SecureCRT、MobaxTerm(强烈推荐) 等等。

2、端口转发只需要一次设置,终端软件可以保存并管理这些端口转发的配置。

3、一般来说,端口转发是将本地(127.0.0.1)上的任意一个端口转发到目标服务器上的指定端口。为什么是“一般来说”,这是针对开发人员访问远程服务器来说的,因为端口转发不仅仅局限于本地的端口转发,端口转发的定义是“从一个网络节点到另一个网络节点”。

4、根据端口转发的原理,实际上是开启一个127.0.0.1 : port ——> 目标主机IP :port 的一个SSH Tunnel(隧道),这个隧道需要一直开启(即终端框不能关闭),一旦隧道关闭(终端关闭),端口转发功能也会立即失效。

5、端口转发是服务器和网络层面的概念,与具体的终端软件无关,它们只是负责修改和保存了一些通信上的配置,换句话说,终端软件配置好端口转发后,只需要最小化即可,其他所有应用都可以使用配置好的端口转发隧道。

2.3 MobaxTerm实现端口转发配置

如果使用SecureCRT实现端口转发功能,可以参考这篇文章《使用SecureCRT进行端口转发》,相信你会有所体会。

因为我一直使用MobaxTerm来操作远程Linux 服务器,所以个人觉得这款软件比较好用,它有免费版(社区版)和商用版两种,日常开发的话,我一直用免费版,完全没有障碍。

下载地址:https://mobaxterm.mobatek.net/download.html

打开MobaxTerm,在上方工具栏中找到Tunneling:

打开后,我们可以看到一个设置界面,然后点击“New SSH tunnel” 按钮,出现如下设置界面:

上图中每个输入框的描述信息一定要仔细阅读,对于理解端口转发有好处,最后我们填写好实际的端口转发信息,并点击“Save”按钮,下图中,我们可以看到所有我们配置好的端口转发隧道,一个端口只能转发到一个远程的端口(可以不一样),如果有多个需要转发的端口,需要配置多个端口转发隧道:

然后,我们点击Start 按钮,就可以打开SSH 通道:

到此为止,已经完成了全部端口转发的配置并启动,我们通过SQLyog 来连接远程服务器看看能否正常连接:

请注意观察IP 和 端口 的配置信息,这里填入的应该是你本地的 IP 和 被转发的端口,也就是说,我们实际上只需要像操作本地数据库一样即可,只不过操作的端口被转发到了远程服务器而已

可以看到,连接成功!

那么在 程序中配置的 DataSource应该是怎样的呢?同样,也应该是本地的 ip 和被转发的端口:

注意,在进行远程访问的过程中,MobaxTerm应该最小化,但不可以关闭!

三、总结

首先,端口转发的意思就是将一台服务器上的一个端口映射到一个受跳板机保护的目标服务器的端口上的过程。

这在实际的企业开发中是必备技能。

端口转发的配置非常简单,拥有一个趁手的 终端软件,如MobaxTerm,可以让配置过程更加事半功倍。博主第一次配置端口转发的工具是 SecureCRT,后来使用MobaxTerm来进行配置。

推荐MobaxTerm 的理由,我想只要你用过,就知道好在哪里了。不仅界面美观大气,科技感十足,在进行端口转发配置的时候,也感受到了满满的人性化:

这么直观的网络拓扑图,我相信大家会有自己的选择。唯一的缺点就是全英文,如果英文不好的小伙伴还是不建议使用的,不过博主认为除了这一点小障碍以外,总体来说这款终端软件,完爆其他软件。

服务端开发——云服务器的端口转发设置(SSH隧道)相关推荐

  1. 艺赛旗(RPA)【服务端】修改服务器访问端口

    艺赛旗 RPA8.0全新首发免费下载 点击下载 http://www.i-search.com.cn/index.html?from=line1 详细内容请参看艺赛旗官网支持栏目:RPA社区 点击链接 ...

  2. 服务端开发---云数据库mysql的常见问题

    时隔两年多了,已经很久没发过博客了.这次就更新一版,云数据库mysql常见问题的博客. 最近一个月自己经历了,本地服务器.云服务器的搭建,包括但不限于云数据库的购买.域名申请.证书申请.域名备案.ng ...

  3. SSH端口转发(ssh隧道)

    在打DarkHole2靶机的时候,使用到了ssh端口转发,在网上搜集了很多资料,特此记录下来,以便后续查找 ssh端口转发 SSH 隧道 本地端口转发 远程端口转发 动态端口转发 当我们需要访问一台主 ...

  4. 【云风skynet】详解skynet的多核高并发编程丨actor模型丨游戏开发丨游戏服务端开发丨多线程丨Linux服务器开发丨后端开发

    skynet中多核高并发编程给我们的启发 1. 多核并发编程 2. actor模型详解 3. 手撕一个万人同时在线游戏 视频讲解如下,点击观看: [云风skynet]详解skynet的多核高并发编程丨 ...

  5. 一、服务端开发基础(搭建Web服务器、网络基础概念、请求响应流程、配置Apache、静态网站与动态网站)

    一.建立你的第一个网站(目标) 前端开发 最终还是属于 Web 开发 中的一个分支,想要成为一名合格的前端开发人员,就必须要 充分理解Web 的概念. 构建一个专业的网站是一项巨大的工作!对于新手我们 ...

  6. 抖音、腾讯、阿里、美团春招服务端开发岗位硬核面试(二)

    在上一篇 文章中,我们分享了几大互联网公司面试的题目,本文就来详细分析面试题答案以及复习参考和整理的面试资料,小民同学的私藏珍品????. 首先是面试题答案公布,在讲解时我们主要分成如下几块:语言的基 ...

  7. 阿里云服务器开放端口的正确方式(超详细图文教程)

    笔者近期开发完成的服务端程序部署在阿里云的ECS云服务器上面,一些应用程序配置文件需要设置监听的端口(如Tomcat的8080.443端口等),虽然通过CentOs 7系统的的「防火墙」开放了对应的端 ...

  8. 微信服务端开发必备技能——内网穿透

    前言    我们在做微信服务端开发的时候,经常会碰到需要调试,但是微信回调必须要外网环境,这时候只能打到服务器上了:那有没有什么办法是可以直接在本地调试呢?内网穿透可以让我们在本地进行调试. 什么是内 ...

  9. java服务端开发 php_PHP使用thrift做服务端开发

    php中文网最新课程 每日17点准时技术干货分享 php使用thrift做服务端开发 thrift采用接口描述语言定义和创建服务,用二进制格式传输数据,体积更小.效率更高,对于高并发.数据量大和多语言 ...

最新文章

  1. 丽水数据可视化设计价格_网站建设之B端交互设计——数据可视化图表
  2. Go 语言编程 — viper 配置管理工具
  3. PostSharp AOP编程:1.基于PostSharp的AOP日志记录和异常捕捉【附带源码】
  4. macOS下安装dlib踩坑记录
  5. 在navicat中查看所有表的注释
  6. php 传递resource参数,php define的第二个参数使用方法_php技巧 - is_resource
  7. 商汤科技大涨逾15% 市值突破2000亿港元
  8. R语言将一列分解为多列
  9. MySQL总结4_多表查询
  10. Mysql8完全卸载教程
  11. 指纹识别传感器技术演变历程
  12. Android平台Cocos2dx打包流程
  13. 税控服务器红字信息表流程,跨月发票红冲(金税盘、税控盘)操作流程.docx
  14. 如何让图片变清晰——PS滤镜Camera Raw帮你解决
  15. love2d 开发环境
  16. 【毕业设计】单片机森林火灾监控防护预警系统 - 物联网 嵌入式
  17. bzoj2109: [Noi2010]Plane 航空管制
  18. 获取属性配置config文件
  19. CC2530 zigbee IAR8.10.1环境搭建
  20. 衡量软件交付性能的4个指标

热门文章

  1. 数组copyWithin()方法以及JavaScript中的示例
  2. 操作系统(王道笔记第三章内存)
  3. 思科CCNA第一学期期末考试答案
  4. OCP-052考试题库汇总(58)-CUUG内部解答版
  5. linux服务器u盘启动项检测不到,将U盘设置为第一启动项之后却检测不到U盘怎么办?...
  6. html标签名都是小写,到底啥是w3c标准(示例代码)
  7. 一个柱状图里两种数据_分享一些数据分析常用的统计图图表
  8. python简单实用案例_Python 21 Django 实用小案例1
  9. windows7系统设置动态屏保的教程
  10. 网易邮箱大师如何屏蔽邮件 屏蔽垃圾邮件的方法步骤