一条命令实现将本地端口映射到远程端口

3 阅读3分钟

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都解决了。