ssh本地端口转发本质是通过加密隧道将远程内网服务“拉”到本地,核心命令为ssh -n -f -l 本地端口:目标地址:目标端口 用户名@ssh服务器,其中-n禁用远程shell、-f后台运行、-l指定三段式转发规则。

服务器 SSH 本地端口转发,本质是让你在本地电脑上“假装”直接连上了远程内网服务——实际流量经加密隧道中转,不暴露原始服务地址,也不用改服务器配置。
核心命令和参数怎么写
最常用的一条命令长这样:
- ssh -N -f -L 本地端口:目标地址:目标端口 用户名@SSH服务器
- -N:不打开远程 shell,只做转发(安全、轻量)
- -f:连接成功后转入后台,不占终端窗口
-
-L 后面的三段式结构最关键:
• 本地端口:你本地空闲的端口号(比如 8080、3307)
• 目标地址:从 SSH 服务器视角看的服务位置(填 localhost 表示服务器本机;填 192.168.1.100 表示它能访问的另一台内网机器)
• 目标端口:那个服务实际监听的端口(如 MySQL 是 3306,Web 是 80 或 8080)
常见使用场景和例子
不需要改服务绑定地址,就能立刻访问:
宝塔面板11.3.0是一款针对Linux服务器设计的可视化管理工具,通过重构核心模块实现资源占用显著降低,尤其适合低配置服务器环境。它将复杂的命令行操作转化为直观的图形界面,帮助开发者快速完成网站部署、环境配置及日常运维工作,无需专业技术背景即可高效管理服务器。
-
连远程服务器自己的数据库(MySQL/PostgreSQL 只绑了 127.0.0.1):
ssh -N -f -L 3307:localhost:3306 user@1.2.3.4
然后本地用客户端连127.0.0.1:3307,就等于连上了服务器的 3306 -
通过跳板机访问内网 Web 管理页(比如 192.168.10.5:8000):
ssh -N -f -L 8000:192.168.10.5:8000 user@jump.example.com
浏览器打开http://localhost:8000 -
调试远程 Redis 或 Elasticsearch:
ssh -N -f -L 6380:localhost:6379 user@redis-host
本地运行redis-cli -h 127.0.0.1 -p 6380
让别人也能用你的本地转发(局域网共享)
默认只允许 127.0.0.1 访问,如果同事想通过你这台电脑访问,需两步:
- 把
-L 8080:改成-L 0.0.0.0:8080:(注意开头多了0.0.0.0:) - Windows 防火墙要放行该端口(控制面板 → Windows Defender 防火墙 → 允许应用通过防火墙)
怎么确认和管理隧道
命令执行后没报错,基本就算建好了。验证和维护方法:
- 查是否生效:
netstat -ano | findstr :8080(Windows)或ss -tlnp | grep 8080(Linux/macOS) - 关掉隧道:
kill 进程号(查到的 PID),或直接关闭终端(前台运行时) - 避免每次输密码:提前配好 SSH 密钥登录(
ssh-copy-id user@host)










