1. 本地 openclaw Web UI 登录页打不开的典型现象与排查思路你在一台云服务器上把 openclaw 跑起来了终端里看着日志一切正常服务也显示 started结果回到自己电脑浏览器里敲http://127.0.0.1:18789页面转半天最后给你一句「无法访问此网站」。这个场景我遇到过不止一次绝大多数情况不是 openclaw 本身崩了而是访问链路根本没打通。先把这件事讲清楚127.0.0.1这个地址的含义是「本机」。你在自己电脑的浏览器里访问127.0.0.1:18789系统会去连你自己电脑的 18789 端口而不是云服务器的。openclaw 装在云服务器上它的 18789 端口开在服务器的 loopback 上你本地电脑压根不知道有这么个服务存在。所以页面打不开是必然的能打开才奇怪。正确的访问链路应该是这样一条「管道」本地浏览器 → 本地 127.0.0.1:18789 → SSH 隧道 → 云服务器 127.0.0.1:18789 → openclaw Web UI这条链路里缺了中间那段 SSH 隧道浏览器就只能在本地空转。很多人第一次部署 openclaw 会卡在这里因为终端里服务日志刷得好好的容易误以为「服务没问题 能访问」其实这两件事是分开的。排查顺序我建议固定成三步别跳步第一步确认 openclaw 到底监听在哪个地址。如果它只监听127.0.0.1那外部无论如何都直连不了必须走隧道如果它监听0.0.0.0理论上可以用公网 IP 直连但出于安全考虑也不建议把管理后台裸奔在公网。第二步确认你执行 SSH 命令的位置。这是最高频的坑很多人是在已经连上服务器的终端里又敲了一遍ssh -L那等于在服务器上再开一条到自己的隧道方向完全反了。隧道命令必须在你自己电脑的本地终端执行。第三步确认鉴权配置。隧道通了、页面能加载出登录框但登录报错那就是 token 或 Key 的问题跟端口转发无关了。这一步会牵扯到 openclaw 调用模型时的 API 通道配置后面会结合 TaoToken 统一 Key 来讲。把这三步分开看你就能快速判断当前卡在哪一环页面完全打不开 → 大概率是隧道没建或建错位置页面能开但登录失败 → 鉴权/token 问题页面能开、登录也过、但对话报错 → 模型 API 通道问题。我实测下来90% 的「Web UI 登录访问不了 openclaw」都是第一步和第二步没做对。下面按顺序把每一步的可复制操作写清楚你照着敲就行。2. 确认 openclaw 监听地址并准备 TaoToken 统一 Key 通道在动手建隧道之前先回到服务器上把 openclaw 的监听情况摸清楚。这一步决定了你后面隧道命令里那个目标端口写多少、以及要不要额外改配置。用 SSH 连上你的云服务器然后执行ss -tlnp | grep -E 18789|openclaw或者用老一点的命令netstat -tlnp | grep 18789你会看到类似这样的输出LISTEN 0 128 127.0.0.1:18789 0.0.0.0:* users:((openclaw,pid12345,fd8))重点看冒号前面那一段。如果是127.0.0.1:18789说明 openclaw 只监听本机回环外部一律连不上必须走 SSH 隧道。如果是0.0.0.0:18789或*:18789说明它监听所有网卡理论上公网 IP 能直连但我不建议这么干——管理后台暴露在公网风险太高还是走隧道更稳妥。如果 openclaw 是通过配置文件启动的可以顺手看一眼它的监听配置。常见的配置文件位置在~/.openclaw/config.toml或项目目录下的config.yaml里面通常有类似这样的字段[server] host 127.0.0.1 port 18789确认 host 是127.0.0.1就够了不用改成0.0.0.0保持只监听本机、靠隧道访问是最安全的做法。接下来是 TaoToken 这一环。openclaw 作为本地 Agent 工具它需要调用大模型 API 才能干活而模型通道的配置直接决定了你登录后能不能正常对话。TaoToken 在这里的作用是提供一个统一的 API 入口和 Key 管理你不用在 openclaw 里分别填各家厂商的地址和密钥统一走一个 Base URL 加一个 Key 就行。先去 TaoToken 控制台创建一个 API Key。打开 https://taotoken.net/api 进入控制台后找到 API Keys 页面deep linkhttps://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 新建一个 Key 并复制保存。这个 Key 后面要填进 openclaw 的模型配置里。openclaw 的模型配置一般长这样以 TOML 为例[model] provider openai-compatible base_url https://taotoken.net/api api_key sk-你的TaoToken密钥 model_id claude-sonnet-4-20250514这里三件套要写全Base URL 是https://taotoken.net/apiAPI Key 是你刚创建的那串Model ID 按你实际要用的模型填。如果你用的是 Claude Code 这类工具配置项名称可能略有不同但核心还是这三样。注意Base URL 填https://taotoken.net/api即可不要在后面多加/v1之类的路径具体以接入文档为准。文档地址https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite把监听地址确认好、TaoToken Key 准备好前置工作就完成了。接下来才是本篇的核心建 SSH 隧道。3. 可复制的 SSH 隧道端口转发配置与 openclaw 接入片段这一步是整个排查的关键也是最容易出错的地方。请务必记住一个原则SSH 隧道命令在你自己的电脑上执行不是在服务器上执行。先确认你现在在哪。如果你终端提示符是[rootiZ2ze...]#或者ubuntuip-172-xx:~$这种说明你还在服务器里。输入exit或logout回车退回到你自己的电脑。退出来后你应该看到Windows 是C:\Users\你的用户名Mac/Linux 是你的用户名你的电脑名:~$看到这两种提示符才说明你回到了本地。这一步千万别搞反我见过太多人在服务器里敲ssh -L然后一脸疑惑为什么没用。回到本地终端后执行这条命令ssh -N -L 18789:127.0.0.1:18789 root你的服务器公网IP把你的服务器公网IP换成你云服务器的实际公网 IP。举个例子假设公网 IP 是8.8.8.8那就是ssh -N -L 18789:127.0.0.1:18789 root8.8.8.8这条命令拆开看-N表示只建隧道不执行远程命令-L是本地端口转发18789:127.0.0.1:18789的意思是「把本地的 18789 端口转发到远程主机的 127.0.0.1:18789」最后的rootIP是登录服务器的账号和地址。回车后会提示你输入服务器密码输完密码终端会像「卡住」一样没有任何输出光标停在那里。这是正常现象说明隧道已经建立成功正在保持连接。这个窗口千万别关它就是那条「管道」关了隧道就断了。如果你觉得每次输密码麻烦可以配 SSH 密钥免密登录或者用-f参数让隧道后台运行ssh -f -N -L 18789:127.0.0.1:18789 root8.8.8.8不过调试阶段我建议还是前台运行方便看报错。隧道建好后openclaw 的模型接入配置也要对齐。如果你用的是 Cline、CC Switch 这类工具配置片段通常是 JSON 格式比如 Cline 的 MCP 或模型设置{ provider: openai, baseUrl: https://taotoken.net/api, apiKey: sk-你的TaoToken密钥, model: claude-sonnet-4-20250514 }如果你用的是 Codex配置写在~/.codex/auth.json里{ OPENAI_API_KEY: sk-你的TaoToken密钥, OPENAI_BASE_URL: https://taotoken.net/api }不管哪种工具三件套都是 Base URL、API Key、Model ID缺一不可。Base URL 统一用https://taotoken.net/apiKey 用你在控制台创建的那串Model ID 按需填。提示隧道命令里的端口号18789要和 openclaw 实际监听端口一致。如果你改过 openclaw 的端口比如改成 8080那命令要相应改成-L 8080:127.0.0.1:8080。配置写完后保持隧道窗口开着进入下一步验证。4. 验证请求与成功结果登录页连通性检查隧道建好、配置写完现在来验证整条链路是否通。这一步要分两层验证先验证端口转发本身通不通再验证 openclaw 登录和模型调用通不通。第一层端口连通性。保持隧道窗口运行另开一个本地终端执行curl -v http://127.0.0.1:18789如果隧道正常你会看到 HTTP 响应头类似 HTTP/1.1 200 OK Content-Type: text/html看到 200 或者 302 跳转说明本地 18789 已经成功转发到服务器的 openclaw 服务上了。如果返回Connection refused说明隧道没建成功或者 openclaw 没在跑如果一直卡住没响应检查隧道窗口是不是被关了。第二层浏览器访问。打开浏览器输入完整地址http://127.0.0.1:18789/#token你的token这里的你的token是 openclaw 的访问 token通常在服务启动日志里会打印或者在配置文件里能找到。如果 openclaw 没设 token直接访问http://127.0.0.1:18789也行。正常情况下你应该能看到 openclaw 的 Web UI 登录页或者直接进入主界面。如果页面能加载出来说明端口转发这一环彻底通了。第三层模型调用验证。登录进去后随便发一条消息测试模型通道。如果 openclaw 配置里 Base URL 和 Key 填对了模型会正常回复。如果报错看具体错误信息报 401 UnauthorizedTaoToken Key 填错了或者过期了去控制台重新生成一个。报 model not foundModel ID 写错了检查你填的模型名是否在 TaoToken 支持的列表里。报连接超时Base URL 写错了确认是https://taotoken.net/api。想单独验证模型通道是否正常可以脱离 openclaw直接用 curl 测一下curl https://taotoken.net/api/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer sk-你的TaoToken密钥 \ -d { model: claude-sonnet-4-20250514, messages: [{role: user, content: 你好}] }如果返回正常的 JSON 回复说明 TaoToken 通道没问题问题就在 openclaw 的配置上。如果这条 curl 也报错那就是 Key 或 Base URL 的问题。你也可以直接在 TaoToken 的模型对话页面测试https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite 在网页里选模型发消息能正常回复就说明 Key 和通道都是好的省得在本地折腾 curl。三层验证都过了你的 openclaw Web UI 就能正常登录和使用了。整个过程的核心就是那条 SSH 隧道它把本地和服务器的 loopback 连了起来。5. 本篇常见报错排查401、local proxy failed、reading choices、OAuth即使按步骤做了还是可能撞上一些报错。这里把几个高频错误和对应解法列出来你对照着看。报错一401 Unauthorized / invalid api key这是最常见的鉴权错误。原因通常是 TaoToken Key 填错、复制时带了空格、或者 Key 已过期。解决方法是去控制台重新创建一个 Key复制时注意别把首尾空格带进去。如果你用的是 Cline 或 CC Switch检查 JSON 配置里apiKey字段的值是否完整。另外确认 Base URL 是https://taotoken.net/api有些工具会自动在末尾拼/v1如果拼重了也会 401。报错二local proxy failed / connection refused这个报错通常出现在隧道没建好或者隧道窗口被关了的时候。检查你本地终端里那条ssh -N -L命令的窗口是否还开着如果关了重新执行一遍。另外确认命令里的目标端口和 openclaw 实际监听端口一致。还有一种情况是你把隧道命令敲在了服务器里而不是本地回到本地重新执行。报错三reading choices / cannot read property choices of undefined这个报错一般出现在模型返回格式不符合预期的时候。常见原因是 Base URL 或 Model ID 填错导致返回的不是标准的 chat completions 格式。检查你的 Base URL 是不是https://taotoken.net/apiModel ID 是不是有效的模型名。如果你用的是 Claude Code 这类工具确认它走的是 OpenAI 兼容格式有些工具默认走 Anthropic 原生格式需要额外配置。报错四OAuth 相关错误 / authentication failed如果你用的是 Claude Code 并且走了 OAuth 登录流程可能会遇到这个。Claude Code 的接入建议直接用 API Key 方式配置在 settings 里{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的TaoToken密钥 } }把 Base URL 和 Key 写进环境变量绕开 OAuth 流程。具体路径和字段名以接入文档为准https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 。报错五页面能开但一直转圈 / 登录后白屏这种情况通常是隧道通了但 openclaw 后端有问题。回到服务器上看 openclaw 的日志确认它有没有报错。另外检查 openclaw 的 token 配置如果 token 不对登录页可能会一直卡在验证状态。把这几类报错和前面的三层验证对应起来你基本能定位到问题出在隧道、鉴权还是模型通道。排查的时候一次只改一个变量改完立刻验证别一次改一堆不然出了问题不知道是哪个改动导致的。6. 长期编码与 Agent 场景的通道选择建议隧道打通、openclaw 能正常登录之后如果你打算长期用它来做编码或者跑 Agent 任务通道的稳定性就变得很重要了。临时调试用按量计费的 API Key 没问题但如果每天都要跑大量请求建议了解一下 Coding Plan 这类套餐https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 在成本和额度上会更可控。另外几个实用建议都是踩过坑总结的隧道稳定性方面前台运行的ssh -N -L窗口一旦网络抖动就可能断掉。长期使用建议加上ServerAliveInterval参数保活ssh -N -L 18789:127.0.0.1:18789 -o ServerAliveInterval60 root8.8.8.8这样每 60 秒发一次心跳减少断连概率。如果还是经常断可以考虑用 autossh 自动重连。端口冲突方面如果你本地 18789 已经被别的程序占用了隧道会建失败。换个本地端口就行比如-L 28789:127.0.0.1:18789然后浏览器访问http://127.0.0.1:28789。多服务场景方面如果你在服务器上跑了多个 Web 服务可以一条 SSH 命令转发多个端口ssh -N -L 18789:127.0.0.1:18789 -L 8080:127.0.0.1:8080 root8.8.8.8这样一条隧道搞定多个服务不用开多个窗口。Key 管理方面TaoToken 的 Key 建议按用途分开创建比如一个用于 openclaw一个用于 Claude Code这样哪个 Key 出问题一目了然也方便单独吊销。控制台里可以随时查看每个 Key 的使用情况。最后提醒一句openclaw 的 Web UI 里如果集成了模型对话功能它的模型通道配置和你在本地工具里配的是同一套逻辑都是 Base URL 加 Key 加 Model ID。把这三样对齐了隧道通了剩下的就是正常使用。整个链路里最容易出问题的永远是那条 SSH 隧道记住它必须在本地执行、窗口不能关基本就不会再卡在登录页打不开了。