在日常的 Linux 运维工作中,我们经常会遇到需要访问位于内网、不直接对外暴露的数据库实例(例如 MySQL、Redis)的场景。为了保障数据安全,这些数据库通常只会监听内网 IP,或者通过防火墙限制外部访问。此时,传统的直连方式显然是行不通的。那么,如何既安全又便捷地实现远程访问呢?答案就是——通过 SSH 端口转发技术。而今天,我们将聚焦于如何利用我们熟悉的 FinalShell,以其直观易用的图形界面,轻松实现本地端口转发,从而打通你与内网数据库之间的“秘密通道”。

FinalShell 作为一款功能强大的 SSH 客户端工具,不仅提供了优秀的终端模拟、SFTP 文件传输等核心功能,其内置的端口转发(SSH Tunnel)功能更是解决这类内网访问难题的利器。本文将为你详细讲解如何配置 FinalShell 的本地端口转发,让你能够像访问本地服务一样,轻松管理和操作内网的 MySQL 或 Redis 数据库。

什么是本地端口转发(Local Port Forwarding)?

在深入操作之前,我们先来简单理解一下本地端口转发(Local Port Forwarding,也常称为 LPF)的工作原理。

本地端口转发是一种 SSH 隧道技术。它的核心思想是:当你通过 SSH 连接到一台远程服务器(我们称之为跳板机或堡垒机)时,你可以在本地机器上指定一个端口,将发送到这个本地端口的所有流量,通过 SSH 安全隧道转发到远程服务器,再由远程服务器转发到最终的目标地址和端口。

具体到访问内网数据库的场景,其流程如下:

  1. 你在本地机器上通过 FinalShell 建立一个 SSH 连接到跳板机(该跳板机必须能够访问内网数据库)。
  2. 在 FinalShell 中配置一条本地端口转发规则,例如,将本地的 127.0.0.1:33060 端口映射到跳板机,再由跳板机将数据转发到内网数据库的 内网IP:3306
  3. 当你本地的数据库客户端(如 Navicat、DataGrip)尝试连接 127.0.0.1:33060 时,实际上数据流会经过 SSH 隧道,安全地抵达内网数据库。

内网数据库连接示意图

这种方式的优势在于:内网数据库无需直接暴露在公网,所有的通信都通过 SSH 加密隧道进行,大大提升了安全性。同时,你可以在本地使用熟悉的客户端工具进行操作,体验如同直连。

FinalShell 在本地端口转发中的优势

FinalShell 能够成为你实现本地端口转发的首选工具,主要得益于它在易用性和功能性上的出色表现:

如果你还没有安装 FinalShell,或者对它的基础功能不太熟悉,建议你先阅读我们的 FinalShell 官方下载渠道 获取最新版本,并参考 FinalShell Windows 安装与配置 完成安装与初步设置。

准备工作:环境与工具

在开始配置本地端口转发之前,请确保你已完成以下准备工作:

  1. 安装 FinalShell:确保你的本地计算机上已安装 FinalShell 并能正常运行。
  2. 可用的 SSH 连接:你需要一个可以通过 FinalShell 成功连接的远程服务器(即我们的跳板机/堡垒机)。这台服务器必须具备以下条件:
    • 能够通过 SSH 协议访问。
    • 能够从该服务器内部网络访问到目标内网数据库(MySQL/Redis)。
    • 如果你是第一次连接服务器,可以参考 FinalShell 初次连接服务器 这篇文章。
  3. 内网数据库信息
    • 数据库类型(MySQL 或 Redis)。
    • 内网数据库的实际 IP 地址(例如:192.168.1.100)。
    • 数据库监听的端口号(MySQL 默认为 3306,Redis 默认为 6379)。
    • 数据库的连接凭证(用户名、密码)。
  4. 本地数据库客户端:例如 Navicat、DataGrip 用于 MySQL;Redis Desktop Manager、Another Redis Desktop Manager 用于 Redis。

实操步骤:配置 FinalShell 本地端口转发

接下来,我们将以 MySQL 为例,详细演示如何在 FinalShell 中配置本地端口转发。Redis 的配置方法类似,只需要修改对应的端口号即可。

步骤一:连接到跳板机

打开 FinalShell,双击你已配置好的跳板机/堡垒机连接。确保 SSH 连接成功建立。

步骤二:进入端口转发管理界面

在 FinalShell 连接成功后,顶部菜单栏会显示多个选项卡。找到并点击 “隧道” 选项卡(或者在连接信息右键菜单中选择“隧道管理”)。这将打开端口转发的管理界面。

步骤三:新建本地端口转发规则

在“隧道”管理界面中,你会看到一个空白区域或者已有的隧道规则列表。点击左上角的 “添加” 按钮(通常是一个绿色的加号图标),选择 “本地转发”

此时会弹出一个“本地转发”配置窗口,你需要填写以下信息:

FinalShell 端口转发配置示例

示例配置(以 MySQL 为例):

示例配置(以 Redis 为例):

填写完毕后,点击 “保存” 按钮。如果一切正常,你会看到新的本地转发规则已出现在列表中,并且状态显示为“已启用”。此时,FinalShell 已经为你建立了一个 SSH 隧道,准备好接受本地连接。

连接内网数据库(MySQL/Redis)

配置好 FinalShell 的本地端口转发后,你就可以使用任何本地的数据库客户端工具来连接内网数据库了。

以 MySQL 客户端(如 Navicat)为例:

  1. 新建连接:在你的数据库客户端中,选择新建一个 MySQL 连接。
  2. 连接主机/IP:填写 127.0.0.1 (或 localhost)。因为你配置的是本地端口转发,数据将从你本地机器的这个地址发出。
  3. 端口:填写你在 FinalShell 中配置的 本地端口,例如 33060
  4. 用户名和密码:填写内网数据库的实际用户名和密码。
  5. 测试连接:点击测试连接,如果配置无误,应该能成功连接到内网的 MySQL 数据库。

对于 Redis 客户端(如 Redis Desktop Manager):

  1. 新建连接:在你的 Redis 客户端中,选择新建连接。
  2. 主机/IP:填写 127.0.0.1
  3. 端口:填写你在 FinalShell 中配置的 本地端口,例如 63790
  4. 认证(如果 Redis 有密码):填写 Redis 的认证密码。
  5. 测试连接:连接成功后,你就可以像操作本地 Redis 一样管理内网实例了。

重要提示:在整个连接过程中,FinalShell 到跳板机的 SSH 会话必须保持活动状态。一旦 SSH 会话断开,端口转发隧道也会随之关闭。

安全考量与最佳实践

在使用端口转发时,虽然它本身提供了加密隧道,但仍需注意一些安全细节:

常见问题

1. 为什么我的本地端口转发不生效?

2. 连接内网数据库时提示“连接超时”?

3. 可以同时转发多个数据库或不同类型的服务吗?

4. 转发后,其他电脑能通过我的电脑访问内网数据库吗?

总结

FinalShell 的本地端口转发功能为我们提供了一个强大而灵活的解决方案,完美解决了远程访问内网数据库等服务的难题。它不仅通过 SSH 隧道保障了数据传输的安全性,更通过其直观的图形界面,让复杂的配置过程变得简单易行。

掌握了这项技能,你将能够更高效、更安全地进行日常的运维和开发工作,无论你的数据库藏匿在多深的内网,FinalShell 都能为你架起一道便捷的桥梁。现在就打开 FinalShell,按照本教程的指引,体验一下本地端口转发带来的便利吧!

延伸阅读

若需进一步查阅,可先看本站以下教程: