远程运维里,端口转发常被当成“高级功能”,其实连内网数据库、临时访问跳板机后的管理页面、给同事演示本地服务,都会用到它。围绕SSH终端模拟工具的隧道配置,出问题的地方往往不在命令本身,而在方向、监听地址和生命周期这三件小事上。下面按四个常见坑逐一拆开。
坑一:本地转发和远程转发记反了方向
- 本地转发用 -L,链路是“本机监听端口 → SSH 连接 → 目标地址”,流量从自己这边发起。
- 远程转发用 -R,监听端在服务器一侧,适合把内网服务临时暴露到跳板机上。
- 记不住就看箭头:箭头左边是监听端,右边是最终到达的服务。
- 配完先在终端执行 ss -lntp 或 netstat -lntp,确认端口真的起来了,再打开业务软件。
很多人把本地转发写成远程转发,命令没报错,但浏览器一直转圈。此时不要急着重装工具,先回头核对监听端到底在哪台机器上。
坑二:监听地址写 127.0.0.1 还是 0.0.0.0
- 多数 SSH终端模拟工具默认把本地监听绑在 127.0.0.1,只允许本机访问,这是安全默认值。
- 需要让同网段同事访问时,才改成 0.0.0.0,同时想清楚暴露范围。
- 云主机要同时检查安全组和系统防火墙,两层都放行才通。
- 动态转发 -D 提供的是 SOCKS 代理,不是 HTTP 代理,浏览器插件里的代理类型别选错。
判断方法很简单:本机能通、别人不通,九成是监听地址或防火墙;别人也不通,再查隧道进程本身。
坑三:以为保存会话就等于隧道常驻
在图形界面里把隧道写进会话配置,只是“下次连接时自动带上”,并不等于它会一直活着。
- 关掉标签页、电脑休眠、网络切换,都可能让隧道断开。
- 长时间运行的任务,建议用独立终端或系统服务托管,别挂在会随手关闭的窗口里。
- 在配置里加上 ServerAliveInterval 和 ExitOnForwardFailure,断线行为会更可控。
- 重连时报 Address already in use,先查残留进程,别反复重启工具。
临时用完就关掉,是一条很实用的习惯。留在后台的隧道越多,越难说清哪个端口对应哪台机器。
坑四:多人共用一台跳板,端口和权限互相打架
- 本地监听端口尽量避开 22、80、3306 这类常用端口,减少冲突。
- 团队可以维护一张端口分配表,写清谁、什么时候、映射哪台机器。
- 跳板机可能关闭了 AllowTcpForwarding,命令看似执行成功,实际流量过不去,要提前确认。
- 换人接手时,把隧道配置和用途一起交接,别只留一个孤零零的会话名。
三分钟自检清单
配好一条隧道后,按顺序过一遍:方向对不对、监听地址是否符合访问范围、防火墙是否放行、进程是否残留、权限是否被服务端限制。先用 nc 或 telnet 测端口通不通,再怀疑 SSH终端模拟工具本身。把这些小检查固定下来,隧道配置就不会变成“玄学问题”。