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

引言

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

一、端口转发

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

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

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/558749.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Shiro————核心设计思想

引言 以此篇博客为引,开启一个新的专栏分类——Shiro。 之前在工作中有比较快速的学习过Shiro安全框架,但经过一年的荒废,已经不是很熟悉了,通过这个系列,深入研究和学习Shiro的一些知识,填补安全管理方面…

Web应用安全————账号冻结与 Session 实时失效

引言 开篇时说些题外话,最近刚刚被公司CY,不过很快找到了下家,也同时拿到了三家公司的Offer。一周面试下来,总体感觉面试题少了,不过多了上机程序题。新公司是做外包,不过相比于上一家公司,也算…

Web应用安全————Shiro 解决会话固定漏洞

引言 承接上一篇《Web应用安全————账号冻结与 Session 实时失效》关于 session 的学习,本篇博客聚焦如何通过 shiro 解决会话固定导致的漏洞问题。 首先,没怎么接触过应用安全方面的小伙伴可能会发起疑问 - 什么是会话固定? 简单来说&…

Web应用安全————多点登录互斥

引言 在实际生活中,很多网站都做了多点登录互斥的操作,简单来说就是同一个账号,只能在一台电脑上登录,如果有人在其他地方登录,那么原来登录的地方就会自动下线,再进行操作就会弹出登录界面。 实现思路 …

Linux进阶之路————磁盘查询

引言 承接《Linux进阶之路————Linux磁盘分区与挂载》,本文介绍实际生产中对于磁盘的监控和查询。 一、查询磁盘整体使用情况 基本语法: df -h 该命令会显示包括我们手动挂载的磁盘,如果使用 umount 卸载磁盘,那么将不会显示…

Linux进阶之路————CentOS网络配置

引言 Linux在装机后,如果没有特殊配置,会使用动态获取 IP 地址的策略。本文描述了,虚拟机使用网络的拓扑图,以及如何通过配置,将 IP 地址固定下来,不会因为重启而失效。同时可以访问外网地址。 一、NAT模…

Linux进阶之路————进程与服务管理

引言 在Linux 中,每个执行的程序(代码)都成为一个进程,Linux 为每一个进程分配了一个唯一的 id 号 - PID。 每个进程都会对应一个父进程,而这个父进程可以复制多个子进程,例如 www 服务器。 每个进程都可…

Linux进阶之路———— RPM 与 YUM 包管理

引言 rpm 是一种用于互联网下载的打包及安装工具,它包含在某些 Linux 发行版中,生成具有 .rpm 扩展名的文件。rpm 是 redhat package manager(RedHat 软件包管理器)的缩写,类似 Windows 下的 setup.exe 文件。这一文件…

Linux进阶之路———Shell 编程入门

引言 通过 Shell 编程的学习,铺平架构师道路上的一块大砖。 Shell 在Linux 系统中的定位如下所示: 一、第一个 Shell 脚本 我们通过一个简单的 Shell 脚本来感受一下。 在 Shell 中不需要加 “;” 结尾,通过 vim 可以进行 shell 的编程工…

Linux 实操———CentOS 6 安装配置 Oracle JDK 1.8

引言 本篇博客也属于Linux进阶系列,主要讲解如何在CentOS 6 下安装并配置 JDK 8。由于通过 yum 搜索的结果都是 openjdk,而目前企业中还是以 Oracle jdk 为主,因此,操作步骤这样的。 在Oracle 官网把 jdk 1.8 下载下来&#xff…

Linux 实操———CentOS 6 安装配置 Tomcat

引言 Linux下安装Tomcat。 一、下载、传输与解压 同《Linux 实操———CentOS 6 安装配置 Oracle JDK 1.8》一样,前期都是先在远程机上下载压缩包,然后通过远程终端,将压缩包放在 Linux 的 opt 目录下,然后解压。 下载地址是T…

Spring Boot 实用开发技巧————Eclipse 远程调试

引言 在之前的开发当中,都会进行本地项目启动,然后向本地服务发起请求来进行 Debug 调试代码,这也是开发人员最常见的调试操作。但是当项目逐渐成型,慢慢的将各个模块部署到服务器后,调试的手段可能就仅仅剩下查看执行…

Linux 实操———— Shell 远程执行命令

引言 目前,开发人员的部署方式是,将项目打包(Maven 打包) 然后将 生成的 jar 包等文件,通过Xshell 等终端工具手动传输到远程服务器上,然后再通过在终端执行远程服务器上的 shell 脚本来启动服务。 本篇博客聚焦这样一种解决方案…

Spring Boot 设置 ASCII banner 艺术字

引言 无意中看到Spring boot 项目的 resources 目录下有一个 banner.txt ,打开一看,居然是ASCII 字符画。于是兴起,简单研究了一下。 Spring boot 可以加载 resources 目录下的 banner.txt 文件,将字符画在启动之初输出到日志或…

MySQL 基础 ———— 分组查询

引言 承接上一篇《MySQL 基础 ————高频函数总结》,本篇单独针对分组查询进行简单的总结和归纳,并为后续更为复杂的DQL 语句做好铺垫。 查询语句: SELECT AVG(salary) FROM teacher; 实际上是以全表的 salary 字段来求平均值。但是在实…

MySQL 基础 ———— 连接查询

引言 本篇文章承接《数据库与SQL语句》专栏,进入DQL的重要环节,可以说,这一部分的内容应该占据SQL语言的大部分使用场景。 本篇的连接查询知识,和后面的一些重要的查询知识总结,共同构成了在工作中80%的MySQL应用场景…

MySQL 基础 ———— 子查询

引言 承接《MySQL 基础 ———— 连接查询》,本文介绍和展示SQL中子查询的使用。 子查询是出现在其他语句中的select 语句,也称为内查询。外部的查询语句,称为主查询或外查询。 一、子查询的分类和支持的子句 按照子查询出现的位置&#…

MySQL 基础 ———— SQL语句的执行顺序与 LIMIT 子句

引言 到目前为止,已经总结了常见的SQL子句,包括 SELECT 、FROM、JOIN ... ON、WHERE、GROUP BY、HAVING、ORDER BY。 虽然SQL的书写顺序是固定的,但在MySQL引擎中执行的顺序并不完全和书写顺序一致。除了上述这些子句,下面将会介…

MySQL 基础———— UNION 联合查询

引言 联合查询与连接查询不同,通过UNION 关键字,我们可以将多个查询语句一同执行并将结果集展示出来,不涉及到任何关联关系。 UNION 的含义是“联合,并集,结合”,在MySQL中可以将多个查询语句的结果合并成…

MySQL 基础————常用数据类型

引言 从第一次学习mysql开始,不知道为什么MySQL的数据类型始终没有像Java 一样深入脑海,对某些数据类型的定义和用法,也并不清晰,这篇文章,就好好总结一番,将MySQL中几个常用的数据类型归纳一下。 一、类…