跳至内容

SSH 隧道实用指南

2026-05-09

SSH 隧道是开发者的必备技能,但很多人只用过最基本的 ssh user@host。三种端口转发模式记清楚了,日常开发基本够用。

本地端口转发(-L)

把远程内网的服务映射到本机。

ssh -L 3306:db.internal:3306 jump-host

这条命令让本地的 localhost:3306 流量通过跳板机转发到内网的数据库服务器。典型场景:你在家开发,公司的数据库只在内网可访问。连上跳板机后,mysql -h 127.0.0.1 -P 3306 就能直接操作数据库。

远程端口转发(-R)

反过来,把本地端口暴露给远程服务器。

ssh -R 8080:localhost:3000 public-server

这个场景适合调试 webhook:你在本地起了服务,第三方服务需要回调你的端点。把本地的 3000 端口映射到公网服务器的 8080,webhook URL 填 http://public-server:8080 就能收到回调。

记得在 remote 服务器上设置 GatewayPorts yes 才能让外部访问。

动态端口转发(-D)

临时搭建 SOCKS 代理。

ssh -D 1080 jump-host

然后浏览器或系统代理设置为 socks5://localhost:1080,流量就全走跳板机出去了。配合 SwitchyOmega 这类浏览器扩展,按域名自动切换代理规则,体验更好。

实用技巧

  • -N 不执行远程命令,纯隧道。
  • -f 后台运行。
  • -C 压缩传输,慢网络下有用。
  • ~/.ssh/config 给常用隧道起别名,避免每次敲长命令。

三种模式记清楚,SSH 隧道基本够用。