在日常的 Linux 运维工作中,我们经常会遇到需要访问位于内网、不直接对外暴露的数据库实例(例如 MySQL、Redis)的场景。为了保障数据安全,这些数据库通常只会监听内网 IP,或者通过防火墙限制外部访问。此时,传统的直连方式显然是行不通的。那么,如何既安全又便捷地实现远程访问呢?答案就是——通过 SSH 端口转发技术。而今天,我们将聚焦于如何利用我们熟悉的 FinalShell,以其直观易用的图形界面,轻松实现本地端口转发,从而打通你与内网数据库之间的“秘密通道”。
FinalShell 作为一款功能强大的 SSH 客户端工具,不仅提供了优秀的终端模拟、SFTP 文件传输等核心功能,其内置的端口转发(SSH Tunnel)功能更是解决这类内网访问难题的利器。本文将为你详细讲解如何配置 FinalShell 的本地端口转发,让你能够像访问本地服务一样,轻松管理和操作内网的 MySQL 或 Redis 数据库。
什么是本地端口转发(Local Port Forwarding)?
在深入操作之前,我们先来简单理解一下本地端口转发(Local Port Forwarding,也常称为 LPF)的工作原理。
本地端口转发是一种 SSH 隧道技术。它的核心思想是:当你通过 SSH 连接到一台远程服务器(我们称之为跳板机或堡垒机)时,你可以在本地机器上指定一个端口,将发送到这个本地端口的所有流量,通过 SSH 安全隧道转发到远程服务器,再由远程服务器转发到最终的目标地址和端口。
具体到访问内网数据库的场景,其流程如下:
- 你在本地机器上通过 FinalShell 建立一个 SSH 连接到跳板机(该跳板机必须能够访问内网数据库)。
- 在 FinalShell 中配置一条本地端口转发规则,例如,将本地的
127.0.0.1:33060端口映射到跳板机,再由跳板机将数据转发到内网数据库的内网IP:3306。 - 当你本地的数据库客户端(如 Navicat、DataGrip)尝试连接
127.0.0.1:33060时,实际上数据流会经过 SSH 隧道,安全地抵达内网数据库。

这种方式的优势在于:内网数据库无需直接暴露在公网,所有的通信都通过 SSH 加密隧道进行,大大提升了安全性。同时,你可以在本地使用熟悉的客户端工具进行操作,体验如同直连。
FinalShell 在本地端口转发中的优势
FinalShell 能够成为你实现本地端口转发的首选工具,主要得益于它在易用性和功能性上的出色表现:
- 图形化界面,操作直观:与命令行手动配置
ssh -L相比,FinalShell 提供了清晰的图形化界面来添加、管理和删除端口转发规则,即使是初学者也能快速上手,大大降低了学习成本。 - 会话绑定,管理便捷:端口转发规则可以直接绑定到 FinalShell 的 SSH 会话中,当会话建立时转发规则自动生效,会话断开时则自动失效,无需额外操作。
- 集成多种功能,一站式体验:除了端口转发,FinalShell 还集成了文件管理(SFTP)、性能监控、网络工具等,让你可以在一个工具内完成大部分运维操作,无需频繁切换。
如果你还没有安装 FinalShell,或者对它的基础功能不太熟悉,建议你先阅读我们的 FinalShell 官方下载渠道 获取最新版本,并参考 FinalShell Windows 安装与配置 完成安装与初步设置。
准备工作:环境与工具
在开始配置本地端口转发之前,请确保你已完成以下准备工作:
- 安装 FinalShell:确保你的本地计算机上已安装 FinalShell 并能正常运行。
- 可用的 SSH 连接:你需要一个可以通过 FinalShell 成功连接的远程服务器(即我们的跳板机/堡垒机)。这台服务器必须具备以下条件:
- 能够通过 SSH 协议访问。
- 能够从该服务器内部网络访问到目标内网数据库(MySQL/Redis)。
- 如果你是第一次连接服务器,可以参考 FinalShell 初次连接服务器 这篇文章。
- 内网数据库信息:
- 数据库类型(MySQL 或 Redis)。
- 内网数据库的实际 IP 地址(例如:
192.168.1.100)。 - 数据库监听的端口号(MySQL 默认为
3306,Redis 默认为6379)。 - 数据库的连接凭证(用户名、密码)。
- 本地数据库客户端:例如 Navicat、DataGrip 用于 MySQL;Redis Desktop Manager、Another Redis Desktop Manager 用于 Redis。
实操步骤:配置 FinalShell 本地端口转发
接下来,我们将以 MySQL 为例,详细演示如何在 FinalShell 中配置本地端口转发。Redis 的配置方法类似,只需要修改对应的端口号即可。
步骤一:连接到跳板机
打开 FinalShell,双击你已配置好的跳板机/堡垒机连接。确保 SSH 连接成功建立。
步骤二:进入端口转发管理界面
在 FinalShell 连接成功后,顶部菜单栏会显示多个选项卡。找到并点击 “隧道” 选项卡(或者在连接信息右键菜单中选择“隧道管理”)。这将打开端口转发的管理界面。
步骤三:新建本地端口转发规则
在“隧道”管理界面中,你会看到一个空白区域或者已有的隧道规则列表。点击左上角的 “添加” 按钮(通常是一个绿色的加号图标),选择 “本地转发”。
此时会弹出一个“本地转发”配置窗口,你需要填写以下信息:
- 本地端口:这是你本地计算机上将要监听的端口。建议选择一个不常用的端口,避免与本地其他服务冲突。例如,如果你要转发 MySQL,可以选择
33060;转发 Redis 可以选择63790。你可以选择任何大于1024且未被占用的端口。 - 远端地址:填写内网数据库的实际 IP 地址。例如:
192.168.1.100。 - 远端端口:填写内网数据库监听的端口号。MySQL 默认为
3306,Redis 默认为6379。 - 备注(可选):为这条转发规则添加一个描述性名称,方便日后管理。例如:“内网MySQL”、“开发Redis”。
- 启用:确保此项勾选,表示该规则是激活状态。

示例配置(以 MySQL 为例):
- 本地端口:
33060 - 远端地址:
192.168.1.100(假设这是你的内网 MySQL 服务器 IP) - 远端端口:
3306 - 备注: 内网 MySQL 数据库
示例配置(以 Redis 为例):
- 本地端口:
63790 - 远端地址:
192.168.1.200(假设这是你的内网 Redis 服务器 IP) - 远端端口:
6379 - 备注: 内网 Redis 缓存
填写完毕后,点击 “保存” 按钮。如果一切正常,你会看到新的本地转发规则已出现在列表中,并且状态显示为“已启用”。此时,FinalShell 已经为你建立了一个 SSH 隧道,准备好接受本地连接。
连接内网数据库(MySQL/Redis)
配置好 FinalShell 的本地端口转发后,你就可以使用任何本地的数据库客户端工具来连接内网数据库了。
以 MySQL 客户端(如 Navicat)为例:
- 新建连接:在你的数据库客户端中,选择新建一个 MySQL 连接。
- 连接主机/IP:填写
127.0.0.1(或localhost)。因为你配置的是本地端口转发,数据将从你本地机器的这个地址发出。 - 端口:填写你在 FinalShell 中配置的 本地端口,例如
33060。 - 用户名和密码:填写内网数据库的实际用户名和密码。
- 测试连接:点击测试连接,如果配置无误,应该能成功连接到内网的 MySQL 数据库。
对于 Redis 客户端(如 Redis Desktop Manager):
- 新建连接:在你的 Redis 客户端中,选择新建连接。
- 主机/IP:填写
127.0.0.1。 - 端口:填写你在 FinalShell 中配置的 本地端口,例如
63790。 - 认证(如果 Redis 有密码):填写 Redis 的认证密码。
- 测试连接:连接成功后,你就可以像操作本地 Redis 一样管理内网实例了。
重要提示:在整个连接过程中,FinalShell 到跳板机的 SSH 会话必须保持活动状态。一旦 SSH 会话断开,端口转发隧道也会随之关闭。
安全考量与最佳实践
在使用端口转发时,虽然它本身提供了加密隧道,但仍需注意一些安全细节:
- 最小权限原则:用于连接数据库的账户应该只拥有必要的权限,避免使用具有全部权限的
root或admin账户。 - 使用强密码或密钥对:确保你的 SSH 跳板机使用强密码,或更推荐使用 SSH 密钥对进行登录,提高连接安全性。关于 SSH 密钥对登录,你可以参考 FinalShell SSH 密钥对登录 的详细教程。
- 仅转发必需端口:避免转发不必要的端口,只为确实需要的服务建立隧道。
- 防火墙配置:确保跳板机的防火墙(如
firewalld或ufw)允许 SSH 流量通过,并且允许跳板机访问内网数据库的相应端口。 - 会话管理:当不再需要访问内网数据库时,及时关闭 FinalShell 的 SSH 会话,或者禁用相应的端口转发规则,以减少潜在的安全风险。
常见问题
1. 为什么我的本地端口转发不生效?
- SSH 连接是否正常? 首先确认 FinalShell 到跳板机的 SSH 连接是正常且稳定的。如果 SSH 连接断开,转发自然会失效。
- 端口是否被占用? 检查你设置的“本地端口”是否已经被本地其他应用程序占用。你可以在命令行中使用
netstat -ano | findstr <端口号>(Windows) 或lsof -i:<端口号>(Linux/macOS) 来检查。如果被占用,请更换一个未被占用的端口。 - “远端地址”和“远端端口”是否正确? 确认内网数据库的 IP 地址和端口号是否准确无误。
- 跳板机能否访问内网数据库? 在 FinalShell 连接成功后,尝试在终端中 ping 内网数据库的 IP,或者使用
telnet <内网IP> <端口>命令测试跳板机是否能直接访问到数据库服务。如果不能,问题可能出在跳板机到内网数据库的网络连接或防火墙上。 - FinalShell 规则是否启用? 检查 FinalShell 隧道管理界面中的本地转发规则是否勾选了“启用”状态。
2. 连接内网数据库时提示“连接超时”?
- 这通常意味着数据包没有成功抵达内网数据库或者数据库没有响应。请按照上述“本地端口转发不生效”的排查步骤进行检查。特别是跳板机到内网数据库的网络连通性。
- 检查内网数据库的防火墙是否允许来自跳板机 IP 的连接。有时数据库服务器本身也有防火墙规则,需要放行来自跳板机 IP 的连接请求。
3. 可以同时转发多个数据库或不同类型的服务吗?
- 当然可以。你可以在 FinalShell 的“隧道”管理界面中添加多条本地端口转发规则。每条规则对应一个不同的本地端口,指向不同的内网目标(可以是不同的数据库实例,也可以是其他内网服务,如 Web 服务器、Kibana 等)。只要本地端口不冲突,就可以并行使用。
4. 转发后,其他电脑能通过我的电脑访问内网数据库吗?
- 默认情况下,FinalShell 的本地端口转发只会监听
127.0.0.1(localhost),这意味着只有你本地的应用程序才能通过这个端口访问。如果你需要允许局域网内的其他电脑通过你的电脑访问,你需要修改本地端口转发的“本地监听地址”为0.0.0.0(允许所有本地网卡地址),但这会增加一定的安全风险,请谨慎操作,并确保你的本地防火墙配置得当。
总结
FinalShell 的本地端口转发功能为我们提供了一个强大而灵活的解决方案,完美解决了远程访问内网数据库等服务的难题。它不仅通过 SSH 隧道保障了数据传输的安全性,更通过其直观的图形界面,让复杂的配置过程变得简单易行。
掌握了这项技能,你将能够更高效、更安全地进行日常的运维和开发工作,无论你的数据库藏匿在多深的内网,FinalShell 都能为你架起一道便捷的桥梁。现在就打开 FinalShell,按照本教程的指引,体验一下本地端口转发带来的便利吧!
延伸阅读
若需进一步查阅,可先看本站以下教程: