824 字
4 分钟
SSH反向隧道-原理-用法-实战
2026-10-09

介绍下ssh反向隧道:ssh -R…

SSH 反向隧道(reverse tunnel)本质上是把远端机器的端口映射回本地机器,常用于“内网穿透”。

你提到的 ssh -R,我们直接从原理 + 用法 + 实战来讲清楚。


一、核心概念(一句话理解)#

ssh -R = 让远程服务器帮你开一个端口,这个端口的流量会被转发回你本地


二、基本语法#

ssh -R [远程端口]:[本地地址]:[本地端口] user@远程服务器

👉 含义:

部分说明
远程端口在远程服务器上监听的端口
本地地址本地服务地址(通常 127.0.0.1)
本地端口本地服务端口
user@远程SSH服务器

三、最经典例子(内网穿透)#

场景#

你有一台:

  • 本地电脑(在 NAT / 内网里)
  • 一台公网 VPS

你本地跑了一个服务:

localhost:8080

你想让外网访问它。


命令#

ssh -R 9000:localhost:8080 user@vps

效果#

访问:

vps:9000

👉 实际访问的是:

你本地的 localhost:8080

四、数据流方向(重点)#

很多人会理解错 👇

客户端(你) ----SSH----> VPS

但端口转发是反的:

外部用户 → VPS:9000 → SSH隧道 → 你本地:8080

👉 所以叫“反向隧道”


五、和 ssh -L 的区别#

类型命令方向
本地转发ssh -L本地 → 远程
反向转发ssh -R远程 → 本地

六、常见高级用法#

1️⃣ 绑定 0.0.0.0(让别人也能访问)#

默认情况下:

ssh -R 9000:localhost:8080 user@vps

👉 只允许 VPS 本机访问


想让公网访问:#

ssh -R 0.0.0.0:9000:localhost:8080 user@vps

⚠️ 还需要 VPS 开启:

GatewayPorts yes

在:

/etc/ssh/sshd_config

2️⃣ 后台运行#

ssh -fN -R 9000:localhost:8080 user@vps
参数含义
-f后台运行
-N不执行远程命令

3️⃣ 自动重连(生产必备)#

用:

  • autossh
autossh -M 0 -fN -R 9000:localhost:8080 user@vps

4️⃣ 多端口映射#

ssh -R 9000:localhost:8080 -R 9001:localhost:22 user@vps

七、典型应用场景#

✔ 内网服务暴露(最常见)#

  • 家里 NAS
  • 本地 Web 服务
  • 开发调试接口

✔ 远程 SSH 回连#

ssh -R 2222:localhost:22 user@vps

然后你可以在 VPS 上:

ssh localhost -p 2222

👉 反向连回你的机器


✔ 绕 NAT / 防火墙#

  • 无公网 IP
  • 被运营商限制入站

✔ 类似 frp / ngrok 的轻量替代#

SSH 就能搞定,不需要额外服务


八、一个完整实战流程#

本地执行:#

ssh -fN -R 0.0.0.0:9000:localhost:8080 user@vps

VPS 配置:#

vim /etc/ssh/sshd_config

确保:

GatewayPorts yes

重启:

systemctl restart sshd

外网访问:#

http://vps_ip:9000

九、安全注意事项(很重要)#

⚠️ 1. 暴露的是你本地服务#

如果你本地是:

localhost:8080

👉 等于公网直接访问


⚠️ 2. 建议加限制#

  • 防火墙(iptables / ufw)
  • 绑定 IP(不要用 0.0.0.0)
  • 加认证(HTTP basic / token)

⚠️ 3. SSH 权限#

可以限制:

AllowTcpForwarding yes

十、你这个方向可以再深入的点#

既然你之前在折腾 VPS / xray / 网络,我建议你可以继续玩这些:

  • SSH 隧道 + SOCKS 代理(-D)
  • 反向隧道 + WebSocket
  • 用 SSH 做一个“简易 frp”
  • 结合 systemd 做常驻服务

如果你想进阶,我可以讲这些(更硬核)#

比如:

  • ssh -R 背后 TCP forwarding 机制(channel / multiplex)
  • 和 frp / wireguard 的本质差异
  • 如何自己写一个反向隧道(用 Go / Python)
  • 在运营商封锁环境下如何伪装

你可以直接说:“讲底层”或者“讲实战架构”。


ChatGPT can make mistakes. Check important info.

SSH反向隧道-原理-用法-实战
http://cypherx.top/posts/cs/ssh反向隧道-原理-用法-实战/
作者
Cypherx
发布于
2026-10-09
许可协议
CC BY-NC-SA 4.0