☰
Web UI登录访问不了openclaw?用SSH隧道把127.0.0.1端口转发到TaoToken
2026/10/17 22:39:36 网站建设 项目流程

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",pid=12345,fd=8))

重点看冒号前面那一段。如果是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 link:https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite ),新建一个 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/api,API Key 是你刚创建的那串,Model ID 按你实际要用的模型填。如果你用的是 Claude Code 这类工具,配置项名称可能略有不同,但核心还是这三样。

注意:Base URL 填https://taotoken.net/api即可,不要在后面多加/v1之类的路径,具体以接入文档为准。文档地址:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite

把监听地址确认好、TaoToken Key 准备好,前置工作就完成了。接下来才是本篇的核心:建 SSH 隧道。

3. 可复制的 SSH 隧道端口转发配置与 openclaw 接入片段

这一步是整个排查的关键,也是最容易出错的地方。请务必记住一个原则:SSH 隧道命令在你自己的电脑上执行,不是在服务器上执行。

先确认你现在在哪。如果你终端提示符是[root@iZ2ze...]#或者ubuntu@ip-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 root@8.8.8.8

这条命令拆开看:-N表示只建隧道不执行远程命令;-L是本地端口转发;18789:127.0.0.1:18789的意思是「把本地的 18789 端口,转发到远程主机的 127.0.0.1:18789」;最后的root@IP是登录服务器的账号和地址。

回车后会提示你输入服务器密码,输完密码,终端会像「卡住」一样没有任何输出,光标停在那里。这是正常现象,说明隧道已经建立成功,正在保持连接。这个窗口千万别关,它就是那条「管道」,关了隧道就断了。

如果你觉得每次输密码麻烦,可以配 SSH 密钥免密登录,或者用-f参数让隧道后台运行:

ssh -f -N -L 18789:127.0.0.1:18789 root@8.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/api,Key 用你在控制台创建的那串,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 Unauthorized:TaoToken Key 填错了或者过期了,去控制台重新生成一个。
  • 报 model not found:Model 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_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite ),在网页里选模型发消息,能正常回复就说明 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/api,Model 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_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite )。

报错五:页面能开但一直转圈 / 登录后白屏

这种情况通常是隧道通了但 openclaw 后端有问题。回到服务器上看 openclaw 的日志,确认它有没有报错。另外检查 openclaw 的 token 配置,如果 token 不对,登录页可能会一直卡在验证状态。

把这几类报错和前面的三层验证对应起来,你基本能定位到问题出在隧道、鉴权还是模型通道。排查的时候一次只改一个变量,改完立刻验证,别一次改一堆,不然出了问题不知道是哪个改动导致的。

6. 长期编码与 Agent 场景的通道选择建议

隧道打通、openclaw 能正常登录之后,如果你打算长期用它来做编码或者跑 Agent 任务,通道的稳定性就变得很重要了。临时调试用按量计费的 API Key 没问题,但如果每天都要跑大量请求,建议了解一下 Coding Plan 这类套餐(https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite ),在成本和额度上会更可控。

另外几个实用建议,都是踩过坑总结的:

隧道稳定性方面,前台运行的ssh -N -L窗口一旦网络抖动就可能断掉。长期使用建议加上ServerAliveInterval参数保活:

ssh -N -L 18789:127.0.0.1:18789 -o ServerAliveInterval=60 root@8.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 root@8.8.8.8

这样一条隧道搞定多个服务,不用开多个窗口。

Key 管理方面,TaoToken 的 Key 建议按用途分开创建,比如一个用于 openclaw,一个用于 Claude Code,这样哪个 Key 出问题一目了然,也方便单独吊销。控制台里可以随时查看每个 Key 的使用情况。

最后提醒一句,openclaw 的 Web UI 里如果集成了模型对话功能,它的模型通道配置和你在本地工具里配的是同一套逻辑,都是 Base URL 加 Key 加 Model ID。把这三样对齐了,隧道通了,剩下的就是正常使用。整个链路里最容易出问题的永远是那条 SSH 隧道,记住它必须在本地执行、窗口不能关,基本就不会再卡在登录页打不开了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询