通过会话管理CLI免公网连接OpenClaw

更新时间:
复制为 MD 格式

通过会话管理CLI(ali-instance-cli)的端口转发和会话连接功能,无需公网 IP 和安全组入方向规则,即可安全访问 ECS 实例内的 OpenClaw 服务。

背景信息

访问 ECS 实例内的 OpenClaw Web 界面或 TUI 界面,通常需要公网 IP 并在安全组中开放服务端口(如 18789)。ali-instance-cli 基于会话管理通道建立加密连接,所有流量经阿里云内部网络传输,无需开放任何端口。

支持以下两种连接方式:

连接方式

说明

适用场景

免公网打开 Web 界面

将实例内 OpenClaw Dashboard 端口转发到本地,通过浏览器访问。

日常使用 OpenClaw,需要图形化操作界面。

免公网登录 TUI 界面

通过会话管理登录实例终端,在命令行中使用 OpenClaw TUI(文本交互界面)。

偏好命令行操作,或需要在终端中直接交互。

前提条件

  • 已完成准备工作,包括:

    • 开启会话管理功能。

    • 确认实例的云助手 Agent 已安装且处于正常状态。

  • 已在本地计算机上安装并配置会话管理CLI

  • ECS 实例中已部署 OpenClaw 服务,且 OpenClaw Gateway 处于运行状态。

重要

如果未开启会话管理功能,执行 ali-instance-cli 命令时会报错 session manager is disabled

免公网打开 Web 界面

通过端口转发将实例内 OpenClaw Dashboard 端口映射到本地,在浏览器中访问 Web 控制界面。

步骤一:确认 OpenClaw Gateway 运行状态

在实例中执行以下命令查看 OpenClaw Gateway 的运行状态:

openclaw gateway status

输出示例:

Gateway: bind=lan (0.0.0.0), port=18789 (env/config)
...
RPC probe: ok
Listening: *:18789

如果输出中 RPC probe 显示 okListening 显示端口号,表示 OpenClaw Gateway 运行正常。

步骤二:获取 Dashboard 访问地址

在实例中执行以下命令获取 OpenClaw Dashboard 的 URL:

openclaw dashboard

输出示例:

Dashboard URL: http://127.0.0.1:18789/#token=<TOKEN>

记录端口号(默认 18789)和 Token 值,后续步骤需要使用。

步骤三:在本地执行端口转发

在本地执行以下命令,将实例内 OpenClaw 端口转发到本地(以 Linux 为例,macOS 和 Windows 用法一致):

./ali-instance-cli portforward --instance <INSTANCE_ID> --local-port 18789 --remote-port 18789

参数说明:

  • --instance:ECS 实例 ID,例如 i-bp1xxxxxxxxxxxxx

  • --local-port:本地监听端口。可以与远程端口不同,例如设置为 18789

  • --remote-port:实例内 OpenClaw 服务的监听端口,默认为 18789

终端输出类似以下信息:

Port forwarding for SessionId: s-hz0xxxxx, local port 18789, remote port :18789
Waiting for connections...

保持终端窗口运行,关闭会断开连接。

步骤四:在浏览器中访问 OpenClaw

在浏览器中打开以下 URL:

http://localhost:18789/#token=<TOKEN>

<TOKEN> 替换为步骤二获取的 Token 值。如果 --local-port 设为其他端口(如 18789),相应修改 URL 中的端口号。

免公网登录 TUI 界面

通过会话连接功能登录 ECS 实例终端,直接启动 OpenClaw TUI(文本交互界面)。

步骤一:确认版本要求

确认本地 ali-instance-cli 版本满足以下最低要求:

操作系统

最低版本要求

Linux

1.2.0.82

Windows

1.1.0.82

macOS

1.3.0.82

执行以下命令查看当前版本:

./ali-instance-cli version

步骤二:确认 OpenClaw Gateway 运行状态

在实例中执行以下命令查看 OpenClaw Gateway 的运行状态:

openclaw gateway status

步骤三:获取 OpenClaw Gateway 的鉴权 Token

openclaw.json 配置文件获取 OpenClaw Gateway 鉴权 Token。

  • Linux:~/.openclaw/openclaw.json

  • Windows:C:\Users\<用户名>\.openclaw\openclaw.json

鉴权 Token 位于 gateway.auth.token 字段:

{
  "gateway": {
    "auth": {
      "mode": "token",
      "token": "<YOUR_TOKEN>"
    }
  }
}

以下命令中 <TOKEN> 即为该值。

步骤四:登录实例并启动 TUI

目标实例为 Linux 系统:

执行以下命令,指定实例 ID、系统用户名和 Gateway 的鉴权 Token:

./ali-instance-cli session --instance <INSTANCE_ID> --user-name <USER_NAME> --commandLine "openclaw tui --token <TOKEN>"

目标实例为 Windows 系统:

执行以下命令,指定实例 ID、系统用户名、用户密码和 Gateway 的鉴权 Token:

./ali-instance-cli session --instance <INSTANCE_ID> --user-name <USER_NAME> --password <PASSWD> --commandLine "powershell -command openclaw tui --token <TOKEN>"

以上为基础命令示例,可根据需求为 openclaw tui 添加其他参数。

常见问题

OpenClaw 部署在 Docker 容器中,端口转发建立后,浏览器无法访问 OpenClaw Web 界面?

OpenClaw Gateway 未绑定到 Docker 可转发的网络接口。Gateway 默认绑定回环(loopback) 地址,Docker 端口映射无法正常转发流量。

解决方法:在实例中执行以下命令将 Gateway 绑定模式改为 LAN,然后重启容器:

<CONTAINER_NAME> 替换为容器名称。

docker exec <CONTAINER_NAME> openclaw config set gateway.bind lan
docker restart <CONTAINER_NAME>

会话连接后执行 Docker 命令提示权限不足?

ali-instance-cli 会话默认以 ecs-assist-user 用户登录,执行 Docker 命令需添加 sudo,例如 sudo docker exec openclaw openclaw dashboard