ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

从局域网内其他电脑访问OpenClaw后台UI:TaoToken统一Key通道下的SSH隧道配置与验证

从局域网内其他电脑访问OpenClaw后台UI:TaoToken统一Key通道下的SSH隧道配置与验证 1. 为什么局域网访问 OpenClaw Control UI 会卡住OpenClaw 跑在书房那台常开的 Linux 小主机上网关默认只监听127.0.0.1:18789也就是只有本机能打开 Control UI。你抱着笔记本坐到客厅想在另一台电脑上看看任务队列、调一下模型通道浏览器输入http://192.168.1.100:18789直接连接被拒。这不是 OpenClaw 坏了而是它的默认安全策略后台 UI 不对外网卡开放避免同网段里任何一台设备都能摸到控制台。解决思路有两条。一条是把bind改成lan让服务监听所有网卡局域网内直接输 IP 就能访问配置简单但等于把控制台摊在整个局域网里谁扫到端口谁就能看到登录页。另一条是 SSH 隧道在客户端电脑上开一条加密通道把服务器本机的18789映射到客户端的localhost:18789浏览器以为自己在访问本机实际流量走 SSH 加密转发。服务端始终只监听127.0.0.1局域网里其他机器扫不到这个端口安全性高一个量级。这篇就按 SSH 隧道这条主线走把命令、配置骨架、TaoToken 统一 Key 通道的鉴权接法、以及 curl 加浏览器的双端验证一次讲透。适合已经在单机跑通 OpenClaw、现在想跨机用 Control UI 的人。下面所有命令我都实际跑过端口、路径按你自己的环境替换即可。2. TaoToken 统一 Key 通道的前置准备OpenClaw 的 Control UI 本身是本地控制台但它背后要调模型、要跑 coding agent这些请求得有一个统一的出口。我习惯把模型通道收敛到 TaoToken 上一个 Key 管所有模型调用换模型不用改一堆环境变量。官网在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 入口是 https://taotoken.net/api 注意 API 地址不带 UTM 参数配置里填这个干净的就行。先去控制台把 Key 建出来地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 在 API Keys 页面生成一个以sk-开头的密钥复制存好后面写进 OpenClaw 配置。如果你还没决定用哪个模型可以先去模型对话页 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 试几条 prompt确认通道通了再落到配置里。这里有个容易混的点SSH 隧道解决的是「怎么从另一台电脑打开 Control UI」TaoToken 解决的是「Control UI 里的模型请求往哪走」。两件事独立但都要配。隧道只转发 HTTP不碰你的 KeyKey 是 OpenClaw 进程在服务器本机发请求时用的。所以你在客户端电脑上不需要装任何 TaoToken 相关的东西浏览器打开 UI 后请求由服务器上的 OpenClaw 带着 Key 发出去。如果你后面要长期跑编码任务或者挂 agent建议顺手看下 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 按套餐走比单次调用省心。接入细节和字段说明在文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 配置前扫一眼能少踩坑。3. 服务端与客户端的可复制配置3.1 服务端确认 SSH 与 OpenClaw 网关状态先在跑 OpenClaw 的那台机器上确认 SSH 服务活着。Ubuntu/Debian 系sudo apt update sudo apt install openssh-server -y sudo systemctl enable --now ssh sudo systemctl status ssh --no-pager看到active (running)就行。macOS 自带 SSH在「系统设置 → 通用 → 共享」里打开「远程登录」即可。Windows 服务端建议装 OpenSSH Server或者干脆把 OpenClaw 挪到 Linux 上跑省事。接着拿局域网 IP别用hostname -I一把梭多网卡时第一个不一定是你要的ip addr show | grep inet | grep -v 127.0.0.1 | awk {print $2} | cut -d/ -f1假设输出192.168.1.100记下来。然后确认 OpenClaw 网关在跑openclaw gateway status正常会看到Runtime: running和Listening: 127.0.0.1:18789。注意这里是127.0.0.1而不是*说明它只监听本机这正是我们要的——隧道方案不需要它对外。3.2 服务端OpenClaw 配置骨架OpenClaw 的配置文件在~/.openclaw/openclaw.jsonLinux/macOS或C:\Users\用户名\.openclaw\openclaw.jsonWindows。隧道方案下bind保持loopback不要改成lan。下面是我在用的骨架把token换成你自己的强令牌apiKey填 TaoToken 的sk-密钥{ gateway: { port: 18789, bind: loopback, auth: { mode: token, token: ChangeMe_StrongToken_2024! }, controlUi: { allowedOrigins: [ http://localhost:18789, http://127.0.0.1:18789 ], allowInsecureAuth: true } }, models: { provider: openai-compatible, baseUrl: https://taotoken.net/api, apiKey: sk-你的TaoToken密钥, defaultModel: claude-sonnet-4-5 } }几个字段说清楚。bind: loopback让网关只监听本机隧道才有意义auth.mode: token必须开否则 OpenClaw 拒绝启动allowedOrigins里只放 localhost 相关来源因为客户端浏览器访问的是http://localhost:18789从服务端视角看 Origin 就是 localhost不会触发跨域拦截。models.baseUrl指向 TaoToken 的 API 地址apiKey就是统一 Key这样 Control UI 里所有模型调用都走这条通道。改完重启openclaw gateway restart openclaw gateway status3.3 客户端建立 SSH 隧道在你要用来访问的那台电脑上执行。基础命令ssh -N -L 18789:127.0.0.1:18789 admin192.168.1.100参数逐个解释。-N表示只建隧道、不执行远程命令终端会挂住不返回这是正常的别关。-L 18789:127.0.0.1:18789是本地端口转发格式为本地端口:目标主机:目标端口这里目标主机写127.0.0.1是站在服务器视角的本机也就是 OpenClaw 网关。admin192.168.1.100换成你的服务器用户名和 IP。用密钥登录更省事也避免每次输密码ssh -i ~/.ssh/id_ed25519 -N -L 18789:127.0.0.1:18789 admin192.168.1.100如果本地18789被占了比如你本机也跑了 OpenClaw把本地端口换掉比如-L 28789:127.0.0.1:18789那浏览器就访问http://localhost:28789。隧道建立后终端没有任何输出是正常的它就在那挂着。想后台跑可以加-f但调试阶段建议前台挂着方便看报错。4. 验证请求与成功结果4.1 curl 先探连通性隧道挂着的前提下在客户端另开一个终端先别急着开浏览器用 curl 打一下curl -i http://localhost:18789/正常会返回HTTP/1.1 200 OK加一段 HTML说明隧道通了、网关也活着。如果返回Connection refused说明隧道没建起来或者本地端口写错了如果返回401 Unauthorized说明隧道通了但鉴权没过往下看第 5 节。再验证一下模型通道是否真的走 TaoToken。在服务器本机执行curl -s https://taotoken.net/api/v1/models \ -H Authorization: Bearer sk-你的TaoToken密钥 | head -c 300能返回模型列表 JSON 就说明 Key 有效、通道可达。这一步在服务器上做因为 Key 存在服务器配置里客户端不碰它。4.2 浏览器打开 Control UI客户端浏览器输入http://localhost:18789页面加载出来会要求输入令牌填配置里auth.token那个值。登录后你应该能看到 Control UI 的完整界面任务列表、模型选择、会话记录。此时点开任意一个会话发一条消息请求路径是「客户端浏览器 → SSH 隧道 → 服务器 OpenClaw → TaoToken API → 模型」整条链路闭环。验证成功的标志有三个页面正常渲染不报跨域错误输入令牌后能进主界面发一条测试消息能拿到模型回复。三个都过说明隧道和 Key 通道都配对了。5. 本篇常见错排查隧道建了但浏览器打不开。先确认终端还挂着-N模式下没有任何输出是正常的但如果你不小心按了 CtrlC 它就断了。用ps aux | grep ssh.*18789在客户端查一下进程还在不在。另外确认浏览器地址是http://localhost:18789而不是http://192.168.1.100:18789后者走的是直连服务端只监听 loopback必然拒绝。提示 Unauthorized 或令牌无效。检查openclaw.json里auth.token和你输入的是否完全一致注意大小写和特殊字符。改完配置必须openclaw gateway restart不重启不生效。如果用的是直连方案bind: lan还要确认allowedOrigins里加了客户端 IP 或网段否则跨域会被拦。SSH 连接超时或拒绝。在服务器上sudo systemctl status ssh看服务状态防火墙放行 22 端口Ubuntu 用sudo ufw allow 22/tcp确认客户端和服务器在同一网段ping 192.168.1.100能通。公司网络里如果做了客户端隔离同网段设备互相不可见这种情况隧道也建不起来得找网管。模型请求报 401 或 404。多半是baseUrl或apiKey写错。baseUrl填https://taotoken.net/api不要带多余路径apiKey确认是sk-开头且没多空格。改完重启网关再用第 4.1 节的 curl 在服务器本机验一次能返回模型列表就说明 Key 没问题问题在 OpenClaw 配置侧。端口冲突。客户端本地18789被占用时SSH 会报bind: Address already in use。换本地端口即可比如-L 28789:127.0.0.1:18789浏览器相应改成http://localhost:28789。服务端端口冲突则改openclaw.json里的gateway.port两边同步改。6. 把通道固定下来隧道方案跑通后日常使用就两步客户端执行一条 SSH 命令浏览器开 localhost。想省事可以写个 shell 别名塞进~/.zshrc或~/.bashrcalias claw-tunnelssh -N -L 18789:127.0.0.1:18789 admin192.168.1.100以后敲claw-tunnel就建隧道。密钥登录配好~/.ssh/config后连用户名和 IP 都能省Host claw HostName 192.168.1.100 User admin IdentityFile ~/.ssh/id_ed25519这样命令简化成ssh -N -L 18789:127.0.0.1:18789 claw。模型通道那边Key 和 baseUrl 已经固化在openclaw.json里换模型只改defaultModel字段不用动 Key。如果你要跑长期编码任务Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 按套餐走更稳接入字段有疑问翻文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite Key 管理在控制台 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 。隧道断了重连就行服务端配置不用动这是它比直连方案省心的地方。
返回列表