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 的凭证优先级要搞清楚:
本地模式
-
OPENCLAW_GATEWAY_TOKEN -
gateway.auth.token -
gateway.remote.token(作为 fallback)
远程模式
-
gateway.remote.token -
OPENCLAW_GATEWAY_TOKEN -
gateway.auth.token
简单记忆:
-
本地模式:优先用本地 token -
远程模式:优先用 remote token
07 | 安全 checklist
远程访问不要随便开,用这个 checklist 检查:
-
✅ Gateway 显式绑在 loopback( gateway.bind: "loopback") -
✅ 用 SSH 隧道或 Tailscale Serve 暴露 -
✅ 如果必须暴露公网,用 gateway.auth.mode: "password" -
✅ 不要把 Token 写死在配置文件里,用环境变量 -
✅ 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 status 或 openclaw 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
夜雨聆风