暴露像 OpenClaw 这样有执行能力的 agent 到公网,不要草率地只开放端口,而要借助成熟的 Zero Trust 平台来管理安全边界。
本文由叽歪同步助手自动同步而来,原文链接是: https://jefftian.dev/posts/zqag8tg778xwen0d 。🐾 在openclaw 配置公网上优雅地暴露 OpenClaw Gateway(Cloudflare Tunnel + Zero Trust)
作者:哈德韦 · 程序员 · 技术博文 | 2026 年
本文将以真实工程场景出发,带你理解如何把一个只监听本机的 OpenClaw Gateway 安全地暴露到互联网,借助 Cloudflare Tunnel 和 Access 做 Zero Trust 保护,同时避免常见坑与安全误区。
今天在树莓派上安装了 OpenClaw,其支持的 Channel,没有一个是我平时在用的,有点小遗憾。我后面可能会开始研究和使用飞书,这样就能方便地随时随地鞭策自己的个人小助手了。不过,OpenClaw 有一个带界面的 Gateway,用浏览器就能使用,所以我暂时也不着急去研究飞书等其他的 Channel 了,就先用浏览器吧!
不过,要做到随时随地鞭策,就需要将它暴露在公网才行。我看到它内置了 tailscale 的支持,不过,我这次也没有使用它,我直接用了 Cloudflare Tunnel + Zero Trust ,最终实现了自己想要的效果。

当然,只有认证通过才能进入以上界面,我直接使用了默认的 Cloudflare ZeroTrust 样式,长这样:

OpenClaw 的设计哲学是安全优先:
- 默认只监听 127.0.0.1:18789,不对公网开放。
- Gateway 默认要求 认证(token/password) 才允许 WebSocket 连接。
- 如果简单把端口放到公网,就像把家门钥匙贴在门上:外人只需一份日志就能控制你的 agent。 :contentReference[oaicite:0]{index=0}
OpenClaw 官方建议:
“Keep the Gateway loopback-only unless you’re sure you need remote exposure.” :contentReference[oaicite:1]{index=1}
“不暴露端口,反向代理 + Tunnel + Zero Trust”才是现代做法。
| 痛点 | 传统做法 | 风险 | 更佳方案 |
|---|---|---|---|
| Gateway 只监听本地 | 修改 bind=0.0.0.0 | 开放公网端口风险大 | 保持 loopback + Tunnel |
| 需要远程访问 | SSH + 端口转发 | 复杂、不稳定 | Cloudflare Tunnel |
| 需要身份认证 | 单纯 token | token 可能泄露 | Cloudflare Access + trusted proxy |
| 安全策略 | Gateway auth | 缺乏 Zero Trust | Cloudflare Zero Trust + auth |
┌───────────────────┐ Client ---->│ Cloudflare Access │ (OAuth / SSO 登录) └───────▲───────────┘ │ │ HTTPS │ ┌───────┴───────────┐ │ Cloudflare Tunnel │ (反向代理到 localhost) └───────▲───────────┘ │ │ Loopback │ 127.0.0.1:18789 <-- OpenClaw Gateway
这套架构的核心理念是:
- Gateway 只在本机监听(安全边界明确)
- Cloudflare Tunnel 负责公网入口
- Cloudflare Access 做 Zero Trust 登录认证
- 只有经过 Access 的请求才能通过 Tunnel 再到 Gateway
安全路径就像一条“安全栈”:只有通过每层校验的请求才能真正到达终点。
默认配置即可:
openclaw gateway start
输出应该显示:
Gateway: bind=loopback (127.0.0.1), port=18789
这意味着只有本机能访问。

前往 Zero Trust → Tunnels → 创建一个 Tunnel,指向:
localhost:18789
将域名设置为你的公网域名:
openclaw.your-domain.net

在 Zero Trust → Access → Applications 中:
- 添加你的域名
openclaw.your-domain.net - 选择登录策略(比如 Google / GitHub 登录)
我这里对接了 Azure AD、http://Authing.cn 以及 Cloudflare 自带的邮箱验证码登录策略,一共3个:

- 把访问限制到指定邮件/组
我目前只允许自己一个人使用:

这样,当用户访问这个 URL 时,Cloudflare 会要求登录。
打开你的 ~/.openclaw/openclaw.json,添加:
{ "gateway": { "bind": "loopback", "trustedProxies": ["127.0.0.1"] } }
解释:
trustedProxies: 只信任来自本机的代理
完成后重启 Gateway:
openclaw gateway restart
所以去掉 token 后 Gateway 会无法启动。
- 请确保 Gateway 绑定为
loopback,不要使用0.0.0.0监听。 - 使用 Cloudflare Access 做强认证,而不要简单依赖 token。
- 如果非要让代理把客户端 IP 传给 Gateway,务必配置
trustedProxies。 - 避免直接将 OpenClaw Gateway 端口暴露给公网。
| 步骤 | 关键点 |
|---|---|
| ① 启动 Gateway | 绑定本地、不要对公网开放基本端口 |
| ② 建立 Tunnel | 将公网域名到本机端口的安全隧道 |
| ③ 设 Zero Trust | 登录/策略控制 |
| ④ 网关信任代理 | 通过 trusted proxy 传递身份 |
| ⑤ 安全审计 | 定期检查 config + audit |
暴露像 OpenClaw 这样有执行能力的 agent 到公网,不要草率地只开放端口,而要借助成熟的 Zero Trust 平台来管理安全边界。Cloudflare 提供了全球流量入口 + Access 认证 + Tunnel 安全转发,是一个既成熟又实用的方案。
有问题欢迎留言,我们一起把这个博客做成开放式实践指南。
发布者:Ai探索者,转载请注明出处:https://javaforall.net/254993.html原文链接:https://javaforall.net
