装完 OpenClaw 之后,第二道门槛通常是远端链路:你的笔记本、CI 跳板或另一台 Mac,要如何稳定触达跑在 Vuncloud M4 云主机(或反向:人在亚太、网关在北美)上的 Gateway。Direct(wss)把 TLS 与 WebSocket 一次性走通,路径最短;SSH 隧道(典型为 -L 本地端口转发)则把「跨公网 wss」替换成「先 SSH 到机器,再在本地环回上说话」,适合出口策略、分区域名或临时排障。本文把两种模式放进同一套决策表,并串起 美东 美西 亚太 的部署跟跑、M4 16GB 对 24GB、1TB/2TB 与并联资源、launchd daemon 持久化,以及 exit 127、Health、Web Chat 类报错的 FAQ。事实锚点仍以 Install、onboard CLI、Remote gateway setup 为准;上一篇安装跟跑见 《在Mac云主机上从零安装并验收OpenClaw》。
搜索意图总览:先判定「出口约束」再选传输包装
很多人把「SSH」和「wss」对立起来;更精确的说法是:wss 始终是 OpenClaw 客户端与 Gateway 的应用层协议,SSH 只是在某些网络条件下替换公网路径或把远端环回端口搬到你的笔记本环回。先用下表对齐证据,再改配置。
| 你现在卡的现象 | 更可能的主因 | 优先尝试 |
|---|---|---|
| 公司 Wi‑Fi 下 wss 握手失败,手机热点可连 | 出口对 WebSocket/TLS 的拦截或代理替换证书 | 合规白名单;或经批准的 SSH 隧道绕开被拦的直连段 |
| 跨洋直连能连但频繁掉线 | RTT 高 + 中间盒 idle 超时;或单实例 CPU/IO 打满 | 网关与交互者大区对齐;拆并联;按官方日志指南看 gateway 侧 |
| 仅 launchd 下失败,交互 SSH 正常 | PATH 与 shell 初始化不一致(常见 exit 127) | plist 内写绝对路径或统一前缀安装;打印 launchctl 环境 |
| 浏览器 Web Chat 异常、CLI 却正常 | 混合内容、扩展拦截、或浏览器连错 origin | 对齐 wss URL、证书与反向代理 Upgrade 配置 |
SSH 隧道 vs Direct(wss):对照表与边界
下列「Direct」指客户端按官方 remote onboard 直接连 wss:// 端点;「SSH 隧道」指你自行维护 ssh -L(或等价)把远端端口映射到本地后再连。端口示例沿用官方 CLI 文档常见写法,实际以你的网关配置为准。
| 维度 | Direct(wss) | SSH 隧道(-L) |
|---|---|---|
| 链路跳数 | 少:TLS 直达网关或终止点 | 多一层 SSH;但可避开「笔记本直连 wss 被拦」 |
| 运维心智 | 证书、DNS、token 与官方 doctor 输出即真相 | 多维护「隧道进程是否活着、本地端口是否漂移」 |
| 安全与合规 | 按企业 TLS 与密钥轮换基线走 | SSH 本身也要纳入 MFA、跳板与审计;避免双端明文堆叠 |
| 典型适用 | 出口放行、网关监听与证书已就绪 | 临时排障、跨区 DNS 混乱、或策略只允许 SSH |
Direct(wss)最小命令与文档锚点
官方 remote 模式示例见 onboard:
openclaw onboard --mode remote --remote-url wss://gateway-host:18789
内网明文 ws:// 与 OPENCLAW_ALLOW_INSECURE_PRIVATE_WS 等开关只在文档写明的威胁模型下使用;生产默认应跟随官方安全建议。
SSH 隧道:把远端 Gateway 搬到本机环回
当 Gateway 只监听远端 127.0.0.1、而你需要从笔记本像「本地服务」一样连它时,本地转发最直观(端口请替换为真实值):
# 笔记本执行:把远端 127.0.0.1:18789 映射到本机 18789
ssh -N -L 18789:127.0.0.1:18789 user@vuncloud-remote-host
随后将 remote-url 指向 wss://127.0.0.1:18789 或文档建议的形态。若 TLS 终止发生在 SSH 之外,仍以官方证书校验说明为准,避免「自签 + 全局关闭校验」这种难审计组合。
美东、美西与亚太:把「网关落点」与「操作者落点」画在一张图上
区域选择的细节可参考机房手记 《Mac云主机选区与租期决策》 与 CI/CD 篇 《Mac云主机接CI/CD》。对 OpenClaw 来说,记住一句:wss 的 RTT 与丢包会放大在「工具调用往返」上;跨洋不是不能做,而是要把高频交互放在离人近的锚点,把批处理与对外通道放在离制品与 API 近的大区。
M4 16GB 对 24GB;1TB/2TB;并联资源:它们如何影响「链路看起来不稳」
内存与磁盘并不会改变 wss 协议本身,但会改变你是否把swap 抖动、根盘打满或多 Job 争用误判成网络问题。经验法则:常驻 Gateway + 浏览器工具 + 索引并行时,24GB 更能压低尾延迟;1TB/2TB 用来承接日志、缓存与多版本工具链。并联(多实例拆分角色)降低单机争用,也降低 Health 探针因 CPU 饥饿触发的假阳性。
| 拓扑 | 适合解决的「假链路问题」 | 代价 |
|---|---|---|
| 单机 Direct wss | 链路简单、排障面最小 | 构建高峰可能与 Gateway 争用 I/O |
| 两台并联:A 网关 / B 重任务 | 队列与 Health 更平滑 | token、缓存根与证书同步要写进 Runbook |
| 笔记本 SSH 隧道到北美网关 | 出口只放行 SSH 时的权宜之计 | 隧道断则全断;要监控 autossh/systemd/Terminal 会话 |
daemon 持久化(launchd)与「只在 SSH 里正常」的温差
官方路径包含 openclaw onboard --install-daemon 与 gateway 安装文档中的 launchd/LaunchAgent 说明。持久化验收建议:
- 重启后立刻跑
openclaw gateway status,不要依赖「我还记得上次手动起过」。 - 对 launchd 使用与交互 shell 相同的 Node/OpenClaw 绝对路径,或统一用官方前缀安装器,避免 exit 127。
- 日志目录与工作区权限按官方 macOS logging 文档核对。
FAQ:exit 127、Health、Web Chat 与隧道/wss 的交叉排障
每条结构:症状 → 快速判定 → 动作。与页内 FAQPage JSON-LD 对齐。
- exit 127(launchd 或 cron) → PATH 不含
openclaw/ Node → 在 plist 写绝对路径;用which openclaw与交互式 SSH 对照。 - exit 127(仅脚本子命令) → shebang 或 env 错 → 显式调用
/usr/bin/env node或修正解释器路径。 - doctor / Health 报 Gateway 异常但隧道未开 → 本地
remote-url仍指向 127.0.0.1 → 先起 SSH-L再重试状态命令。 - Web Chat 无法连接 → 浏览器连错 host / 混合内容 / 扩展拦截 → 对齐控制台 Network 里 WebSocket 帧;关闭拦截类扩展复测。
- 直连间歇 401/403 或 token 错 → 配置多源覆盖 → 收敛到单一配置文件与环境变量来源。
- TLS 企业中间证书 → 系统不信任自定义根 → 按合规导入信任或改用官方推荐终止方式。
ws://、关闭证书校验、以及文档中的 break-glass 环境变量,只应在明确威胁模型与变更单下短期使用;默认应跟随官方安全默认。
收束与延伸阅读
推荐顺序:选大区与网关落点 → 决定 Direct 或 SSH 包装 → 固定 daemon 与 PATH → 用 doctor/status 写基线 → 再谈 16/24GB 与磁盘/并联。定价与区域见 https://vuncloud.com/zh/mac-mini-jiage.html;自助文档见 https://vuncloud.com/zh/bangzhu-zhongxin.html。