1. 云服务器上的 OpenClaw 为什么打不开 Web 界面很多人第一次在云服务器上把 OpenClaw 跑起来systemctl status显示 active日志也没报错但浏览器里输入http://服务器公网IP:18789就是转圈或者连接被拒。这不是 OpenClaw 装坏了而是它默认只监听127.0.0.1也就是只认本机回环地址公网根本进不来。这个设计本身是安全的避免把带鉴权的服务直接暴露在公网被人扫端口。所以「通过 Web 界面访问云服务器上部署的 OpenClaw」这件事本质是两段链路要同时通第一段是本地浏览器到云服务器的端口通道第二段是 OpenClaw 进程到模型 API 的出口通道。前者靠 SSH 本地端口转发解决后者靠 TaoToken 统一 Key 配置解决。两段任意一段断了你看到的都是「页面能开但对话报错」或者「页面根本打不开」。这篇面向的是已经在云服务器上部署好 OpenClaw、会用 SSH 登录、但卡在 Web 访问和 Key 配置这一步的人。我会给出可复制的config.toml骨架、settings.json片段以及启动后怎么验证鉴权和请求转发真的通了。全程在 SSH 会话里操作不需要额外装反向代理。先说清楚一个容易混淆的点OpenClaw 的 Web UI 端口默认 18789和它调用模型的 API 出口是两回事。Web 端口是给你浏览器看的API 出口是 OpenClaw 进程去请求模型服务的。SSH 隧道只解决前者TaoToken 的 Key 解决后者。下面分开讲最后合起来验证。2. TaoToken 前置统一 Key 与 API 通道准备TaoToken 在这里扮演的角色是「统一 Key/API 通道」。你不需要在 OpenClaw 里分别填好几家模型厂商的地址和密钥而是用一套 TaoToken 的 Key 和统一的 API Base让 OpenClaw 通过这一个出口去请求模型。对云服务器场景来说好处是配置项少、换模型不用改代码、出口地址固定好排查。你需要先拿到两样东西一个 API Key和一个 API Base 地址。Key 在控制台的 API Keys 页面创建地址是https://taotoken.net/api注意这个地址不带任何查询参数直接作为 base_url 用。创建 Key 的入口在这里获取 API Keyhttps://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite接入方式和参数说明看文档页里面有 base_url、鉴权头、模型名的写法接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite如果你只是想先在浏览器里确认这个 Key 能不能正常对话不用急着改 OpenClaw 配置可以先去模型对话页发一条消息试试模型对话https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite长期在云服务器上跑编码类 Agent、需要稳定额度和并发的话可以看 Coding Plan它更适合这种常驻场景Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite拿到 Key 之后先别写进配置文件在服务器上用一个 curl 验证出口通不通这一步能帮你把「Key 问题」和「OpenClaw 配置问题」提前分开。命令如下把$TAOTOKEN_KEY换成你自己的 Keyexport TAOTOKEN_KEYsk-你的Key curl -sS https://taotoken.net/api/v1/models \ -H Authorization: Bearer $TAOTOKEN_KEY \ -H Content-Type: application/json | head -c 500如果返回一段包含模型列表的 JSON说明 Key 和出口都正常可以进入下一步。如果返回 401是 Key 不对或没带上返回超时是服务器出网有问题先解决网络再谈 OpenClaw。3. 可复制配置config.toml 骨架与 settings.json 片段OpenClaw 的配置分两层一层是进程级的config.toml管监听地址、端口、鉴权另一层是模型调用相关的settings.json管 API Base、Key、模型名。两层的路径在不同安装方式下略有差异常见的是/opt/openclaw/config.toml和/opt/openclaw/settings.json你可以用find / -name config.toml -path *openclaw*定位。先看config.toml骨架。关键点是host保持127.0.0.1不要改成0.0.0.0因为我们要走 SSH 隧道而不是公网直连port保持 18789auth段打开token 后面在 Web 页面里填# /opt/openclaw/config.toml [server] host 127.0.0.1 port 18789 # 不要改成 0.0.0.0公网直连有风险走 SSH 隧道更稳 [auth] enabled true # token 不写在这里首次访问 Web 页面时填入 session_ttl 86400 [log] level info file /var/log/openclaw/openclaw.log再看settings.json片段这里才是接 TaoToken 的地方。base_url用https://taotoken.net/apiapi_key填你的 Keymodel填你要用的模型名以文档页列出的为准{ provider: { type: openai-compatible, base_url: https://taotoken.net/api, api_key: sk-你的Key, model: 你的模型名, timeout: 120 }, request: { max_retries: 2, retry_delay: 1.5 } }改完两个文件后重载服务让配置生效sudo systemctl restart openclaw sudo systemctl status openclaw --no-pager状态里看到active (running)就说明进程起来了。如果起不来先看日志最后 30 行sudo tail -n 30 /var/log/openclaw/openclaw.log日志里如果出现bind: address already in use说明 18789 被别的进程占了用sudo ss -lntp | grep 18789查是谁处理掉再重启。如果出现 JSON 解析错误多半是settings.json少了逗号或多了逗号用python3 -m json.tool settings.json校验一下。4. 验证请求SSH 隧道、鉴权与转发连通性配置写对了不代表链路通了这一步分三段验证每段都有明确的成功标志。第一段建立 SSH 本地端口转发。在你本地电脑的终端Windows 用 PowerShellmacOS/Linux 用自带终端执行把你的服务器IP和用户名换成真实的ssh -L 18789:127.0.0.1:18789 ubuntu你的服务器IP这条命令的意思是把本地的 18789 端口转发到云服务器上的 127.0.0.1:18789。执行后保持这个窗口开着最小化即可。首次连接会提示确认指纹输入yes然后输入服务器密码。成功后窗口不会返回提示符这是正常的说明隧道已经建立。第二段验证 Web 鉴权。打开本地浏览器访问http://127.0.0.1:18789应该能看到 OpenClaw 的 Web 界面。首次访问会让你填 token这个 token 在服务器的/openclaw.json里用下面命令取cat /openclaw.json | python3 -m json.tool | grep -i token把取到的 token 填进页面认证通过后就能看到对话界面。如果页面能打开但填 token 后一直转圈多半是config.toml里auth.enabled和实际 token 不匹配回头核对。第三段验证请求转发。在 Web 界面里发一条最简单的消息比如「你好」。同时另开一个 SSH 会话盯日志sudo tail -f /var/log/openclaw/openclaw.log成功的话日志里会看到类似POST https://taotoken.net/api/v1/chat/completions 200的记录Web 界面也会正常返回内容。如果日志里是401是 Key 问题是timeout是服务器到 TaoToken 的出网问题是model not found是settings.json里模型名写错了。这三类错误在日志里区分得很清楚照着改就行。5. 本篇常见错排查页面打不开浏览器提示「无法访问此网站」。先确认 SSH 隧道窗口还开着很多人不小心把它关了。再确认本地 18789 没被占用Windows 用netstat -ano | findstr 18789macOS/Linux 用lsof -i:18789。如果本地端口被占换一个本地端口转发比如ssh -L 18888:127.0.0.1:18789 ubuntu你的服务器IP然后浏览器访问http://127.0.0.1:18888。页面能开但对话报 401。这是 Key 没生效。检查settings.json里api_key有没有多余空格检查是不是把 Key 写进了config.toml而不是settings.json。改完记得systemctl restart openclaw不重启不生效。对话报连接超时。在服务器上直接 curl 一下 TaoToken 的地址确认出网正常curl -sS -o /dev/null -w %{http_code}\n https://taotoken.net/api/v1/models \ -H Authorization: Bearer sk-你的Key返回 200 说明出网没问题问题在 OpenClaw 配置返回 000 或超时是服务器网络或安全组出站规则的问题跟 OpenClaw 无关。改了配置但行为没变。大概率是改了错误的配置文件。用ps aux | grep openclaw看进程实际加载的是哪个路径的配置以进程为准不要凭记忆改。日志里出现address already in use。18789 被占。sudo ss -lntp | grep 18789找到占用进程要么停掉它要么把 OpenClaw 的port改成别的同时 SSH 隧道命令里的端口也要同步改。6. 后续接入与长期使用建议把上面这套跑通之后你手上就有了一个稳定的访问链路本地浏览器 → SSH 隧道 → 云服务器 OpenClaw → TaoToken 统一出口 → 模型。这条链路的好处是每一段都能单独验证出问题不用瞎猜。如果你后面要在多台云服务器上部署或者团队里几个人共用建议把 Key 的管理集中到控制台不要每台机器各写一份。控制台入口控制台https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite需要新建或轮换 Key 的时候走 API Keys 页面API Keyshttps://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite接入参数有疑问就翻文档接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite长期在云服务器上跑编码 Agent 的话Coding Plan 比按量更省心Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite最后提醒一句SSH 隧道是临时的本地窗口一关就断。如果你希望长期稳定访问可以在本地配一个~/.ssh/config的LocalForward条目这样每次ssh 别名就自动带上转发不用每次敲长命令。这个属于 SSH 本身的用法跟 OpenClaw 无关但能省不少事。