乐于分享
好东西不私藏

OpenClaw 远程访问最佳实践

OpenClaw 远程访问最佳实践

如果你家里有台 24 小时开机的电脑,又想在公司或出差时使用 AI 助手,远程访问是刚需。这篇聊聊 OpenClaw 的远程访问方案,怎么连最安全、怎么连最方便。


01 | 远程访问解决什么问题

OpenClaw 是一个运行在网关主机上的服务。你在这台电脑上启动 Gateway,它就成了你的 AI 消息中枢。

但问题是:这台电脑不可能随身带。

你上班的时候,想在手机上用 Telegram 问一下 AI 事情。你的手机需要能连接到家里的网关。

远程访问要解决的就是:从任何设备连接到网关主机。


02 | 最安全的方案:loopback + SSH 隧道

先说最安全的方法:让 Gateway 绑在本地(loopback),通过 SSH 隧道访问。

原理

你的电脑(网关): 127.0.0.1:18789
外网设备 → SSH 隧道 → 127.0.0.1:18789

Gateway 默认不绑定 loopback,需要显式配置

{
  "gateway": {
    "bind": "loopback"
  }
}

所有流量都必须通过 SSH 隧道进来。

配置

需要的时候建立 SSH 隧道:

ssh -N -L 18789:127.0.0.1:18789 user@你的网关IP

优缺点

优点

  • 最安全:网关不暴露公网地址
  • 不需要额外软件:一个 SSH 就能连

缺点

  • 需要有 SSH 访问网关的账号
  • SSH 密钥要配好,第一次要手动 trust host key
  • 手机上用不了(Telegram/WhatsApp 发消息不需要 SSH,但 health check 之类的诊断命令需要)

03 | 最方便的方案:Tailscale Serve

如果你用的是 Tailscale(推荐),用它来暴露 Gateway 最方便。

原理

Tailscale 会在你的设备之间建立加密网络。你可以通过 MagicDNS 访问同网络的任意设备。

Serve 模式让 Gateway 保持 loopback,但通过 Tailscale 的 HTTPS 暴露出来。

配置

{
  "gateway": {
    "bind": "loopback",
    "tailscale": { "mode": "serve" }
  }
}

或者直接用 CLI:

openclaw gateway --tailscale serve

然后你就能用 https://你的设备名.ts.net/ 访问控制 UI。

⚠️ 使用前确保 Tailscale 管理后台已启用 MagicDNS。

进阶:免密登录

如果 Tailscale 和 OpenClaw 都在同一台机器上,你可以配置 Tailscale 身份认证:

{
  "gateway": {
    "bind": "loopback",
    "tailscale": { "mode": "serve" },
    "auth": {
      "mode": "password",
      "allowTailscale": true
    }
  }
}

allowTailscale: true 意味着从 Tailscale 网络来的请求可以用 Tailscale 身份,不需要再输密码。

Tailscale 的三种模式

模式 用途 安全性 端口
serve 只在 Tailnet 内暴露 高(同网络设备) 自动
funnel 公网暴露 中(需要密码) 仅 443/8443/10000
off 默认,不暴露

普通人用 serve 就够了。 funnel 除非你有公网访问的强烈需求。


04 | macOS 用户专用:Remote over SSH

如果你用的是 macOS 的 OpenClaw 菜单栏应用,它有个功能叫 Remote over SSH

在哪开

Settings → General → OpenClaw runs,选择 Remote over SSH

⚠️ 注意:这是 macOS 专属功能。Linux 和 Windows 用户请使用 SSH 命令行。

做什么

  • 自动打开 SSH 隧道
  • 自动做 health check
  • Voice Wake 转发自动走这个隧道
  • Web Chat 也自动走这���隧道

测试

Test remote,成功说明远程的 openclaw 命令能跑起来。

常见问题:

  • exit 127:远程的 openclaw 不在 PATH 里
  • Health probe failed:SSH 连不上,或者 PATH 有问题

05 | iOS/Android 怎么连

手机上的 OpenClaw Node 通过 Gateway WebSocket 连接到网关。

如果你用的是 Tailscale Serve,这个 WebSocket 地址就是:wss://你的网关名.ts.net/

如果你的 Gateway 绑在 Tailnet IP 上直连,安全性较低,且可能导致浏览器功能受限。配置跨域允许:

{
  "gateway": {
    "bind": "tailnet",
    "controlUi": {
      "allowedOrigins": ["https://*.ts.net"]
    }
  }
}

务必使用 wss:// 协议(加密)。


06 | 凭证优先级

远程访问涉及到认证,OpenClaw 的凭证优先级要搞清楚:

本地模式

  1. OPENCLAW_GATEWAY_TOKEN
  2. gateway.auth.token
  3. gateway.remote.token(作为 fallback)

远程模式

  1. gateway.remote.token
  2. OPENCLAW_GATEWAY_TOKEN
  3. gateway.auth.token

简单记忆

  • 本地模式:优先用本地 token
  • 远程模式:优先用 remote token

07 | 安全 checklist

远程访问不要随便开,用这个 checklist 检查:

  1. ✅ Gateway 显式绑在 loopback(gateway.bind: "loopback"
  2. ✅ 用 SSH 隧道或 Tailscale Serve 暴露
  3. ✅ 如果必须暴露公网,用 gateway.auth.mode: "password"
  4. ✅ 不要把 Token 写死在配置文件里,用环境变量
  5. ✅ Funnel 模式必须用密码:gateway.auth.mode: "password"

08 | 常见问题

Q: Tailscale Serve 每次重启后都要重新启动吗?

是的。手动启动的 tailscale serve 在系统重启后会失效。配置开机自启动:

# crontab
@reboot sleep 10 && tailscale serve --bg https+insecure://localhost:18789

Q: SSH 隧道会超时断掉吗?

会。长期保持隧道需要配置 ServerAliveInterval。放个 ~/.ssh/config

Host your-gateway
  HostName your-gateway-ip
  User your-user
  ServerAliveInterval 60
  ControlMaster auto
  ControlPath ~/.ssh/sockets/%r@%h-%p
  ControlPersist 600

Q: WhatsApp 登录要在哪做?

网关主机上运行 openclaw channels login --verbose,用手机扫 QR 码。

Q: 能在手机上用 health check 吗?

可以。用 Tailscale 的时候,健康检查走 openclaw gateway statusopenclaw status --deep,不需要 SSH。

Q: 访问时出现 “origin not allowed” 错误怎么办?

这是跨域问题。配置允许 Tailscale 域名:

openclaw config set gateway.controlUi.allowedOrigins '["https://*.ts.net"]'

09 | 总结一下

场景 推荐方案 难度
自己用 Mac/iOS Tailscale Serve
多设备 / 需要 SSH 命令 SSH 隧道 ⭐⭐
公网暴露(不推荐) Tailscale Funnel + 密码 ⭐⭐⭐
只想手机发消息 Tailscale 就行,不需要额外配置

对于大多数人,Tailscale Serve 就是答案

配置一行 tailscale: { mode: "serve" },然后用 MagicDNS 访问,简单安全。

OpenClaw 的设计理念就是:默认安全,暴露可选。

remote access 这个功能,用最保守的方式配,享最放心的服务。


本文参考资料:docs.openclaw.ai