1. ssh -N -L 18789:127.0.0.1:18789 root@x.x.x.x
一句话:把你本地电脑的 18789 端口,映射到远程服务器 (x.x.x.x) 的 127.0.0.1:18789 端口,实现本地访问远程服务
1.1 ssh
- 作用:建立安全的 SSH 连接
- 用途:登录服务器、传输数据、建立隧道
1.2. -N
- 意思:不执行远程命令,只建立端口转发
- 作用:连接成功后不进入终端,只在后台保持隧道
- 不加
-N会直接登录服务器,加了只做端口映射
1.3. -L
- 意思:本地端口转发(Local Forwarding)
- 作用:把本地端口 → 映射到远程服务器的某个端口
- 格式固定:
-L 本地端口:目标IP:目标端口
1.4. 18789:127.0.0.1:18789
这是映射规则,格式:
本地端口 : 目标机器IP : 目标端口
- 18789 → 你本地电脑的端口
- 127.0.0.1 → 远程服务器自己的本地地址(localhost)
- 18789 → 远程服务器上的18789 端口
最终效果:
你访问本地 18789 = 访问远程服务器自己的 18789 端口
1.5. root@x.x.x.x
root→ 用 root 用户登录x.x.x.x→ 远程服务器的公网 IP
为什么要这样做
本地电脑 不能直接 访问远程服务器的 18789 端口
但你可以通过 SSH 隧道 做一个 “通道”:
通道关系:
你电脑 18789 ←→ SSH隧道 ←→ 服务器 127.0.0.1:18789
就等于访问 远程服务器内部的 18789 端口
一般服务器上的服务不对外开放,更安全
只能通过 SSH 隧道访问
常用于:OpenClaw、WebUI、大模型界面、数据库等
2. 为什么 SSH 建隧道就能访问?
因为:SSH 会在你的电脑 ↔ 远程服务器之间,创建一条加密、安全的 “秘密通道”,所有数据都走这条通道穿过防火墙。
你可以把它理解成:
服务器的 18789 端口服务 = 一个只对内开放、不让外人进的小区
防火墙 = 大门保安,只允许 SSH(22 端口)进入
SSH 隧道 = 你走 SSH 通道进去,再从服务器内部访问那个服务
也就是说:你不是直接访问 18789(被拦)
你是访问 SSH(22 端口,允许通行)
SSH 帮你把数据传到服务器内部,再访问 18789
3. 原理一句话讲透
SSH 隧道 = 数据偷渡 + 内部转发
你访问 本地 18789
数据被 SSH 客户端加密
走 SSH 22 端口 发到服务器(防火墙允许)
服务器 SSH 服务收到后解密
在服务器内部访问 127.0.0.1:18789
结果原路返回给你
所以:
哪怕服务器 18789 端口没对外开放,只要能连 SSH,就能访问!
4. SSH 使用什么协议通信?
SSH = Secure Shell(安全外壳协议)
它是一种 独立的加密网络协议,工作在 应用层。
底层技术:
TCP 协议(可靠传输)
默认端口:22
全程 加密(AES / RSA)
数据不可窃听、不可篡改
简单说:
SSH 是一种安全、加密、可靠的远程连接协议,
几乎所有服务器都必须开放 SSH 22 端口,否则无法管理。
总结
今天主要是在火山云上部署openclaw遇到的问题,只能通过这种隧道的方式,访问远程openclaw。部署过程中遇到不少问题,不过通过ai都解决了。