遠端存取你的 Gateway:SSH、Tunnels 與 Tailnets 完全指南
你是不是也遇過這種情況:在家裡的桌機跑了一堆超強的 AI Agent,結果出門在外用筆電時,卻發現什麼都連不上?或者你想在手機上用這些功能,但又不想把 Gateway 暴露在公網上?
這份文件會教你如何透過 SSH、隧道和 tailnets 實現遠端存取。這個專案支援「Remote over SSH」,讓你可以在專用主機(桌機或伺服器)上執行單個 Gateway(主節點),並讓其他客戶端連線到它。
- 對於 操作者(你 / macOS App):SSH 隧道是萬用的備選方案。
- 對於 節點(iOS/Android 及未來的設備):根據需要透過 LAN/tailnet 或 SSH 隧道連線到 Gateway WebSocket。
- Gateway WebSocket 會綁定到你設定連接埠的 loopback(預設為 18789)。
- 若要遠端使用,你可以透過 SSH 轉發該 loopback 連接埠(或者使用 tailnet/VPN 來減少隧道需求)。
常見的 VPN/tailnet 設定(Agent 所在地)
Section titled “常見的 VPN/tailnet 設定(Agent 所在地)”你可以把 Gateway 主機 想像成「Agent 居住的地方」。它擁有 session、auth profile、channel 和狀態。你的筆電/桌機(以及節點)都會連線到該主機。
1) 在你的 tailnet 中執行常駐 Gateway(VPS 或家用伺服器)
Section titled “1) 在你的 tailnet 中執行常駐 Gateway(VPS 或家用伺服器)”在持久的主機上執行 Gateway,並透過 Tailscale 或 SSH 存取。
- 最佳體驗: 保持
gateway.bind: "loopback"並使用 Tailscale Serve 來處理 Control UI。 - 備選方案: 保持 loopback,並從任何需要存取的機器建立 SSH 隧道。
- 範例: exe.dev(簡單的 VM)或 Hetzner(生產環境 VPS)。
當你的筆電經常休眠,但你希望 Agent 保持常駐時,這是最理想的選擇。
2) 家用桌機執行 Gateway,筆電作為遠端控制
Section titled “2) 家用桌機執行 Gateway,筆電作為遠端控制”筆電 不執行 Agent,而是遠端連線:
- 使用 macOS App 的 Remote over SSH 模式(Settings → General → “OpenClaw runs”)。
- App 會自動開啟並管理隧道,所以 WebChat 和健康檢查都能正常運作。
操作指南:macOS 遠端存取。
3) 筆電執行 Gateway,從其他機器遠端存取
Section titled “3) 筆電執行 Gateway,從其他機器遠端存取”讓 Gateway 保持在本地,但安全地暴露它:
- 從其他機器建立 SSH 隧道連到筆電,或者
- 使用 Tailscale Serve 暴露 Control UI,並讓 Gateway 保持僅限 loopback。
指南:Tailscale 與 [Web
ssh -N -L 18789:127.0.0.1:18789 user@host{ gateway: { mode: "remote", remote: { url: "ws://127.0.0.1:18789", token: "your-token", }, },}Host remote-gateway HostName <REMOTE_IP> User <REMOTE_USER> LocalForward 18789 127.0.0.1:18789 IdentityFile ~/.ssh/id_rsassh-copy-id -i ~/.ssh/id_rsa <REMOTE_USER>@<REMOTE_IP>openclaw config set gateway.remote.token "<your-token>"<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict> <key>Label</key> <string>ai.openclaw.ssh-tunnel</string> <key>ProgramArguments</key> <array> <string>/usr/bin/ssh</string> <string>-N</string> <string>remote-gateway</string> </array> <key>KeepAlive</key> <true/> <key>RunAtLoad</key> <true/></dict></plist>launchctl bootstrap gui/$UID ~/Library/LaunchAgents/ai.openclaw.ssh-tunnel.plistps aux | grep "ssh -N remote-gateway" | grep -v greplsof -i :18789launchctl kickstart -k gui/$UID/ai.openclaw.ssh-tunnellaunchctl bootout gui/$UID/ai.openclaw.ssh-tunnelOpenClaw Expert
還是卡住了?
如果這篇文件沒有解決你的情境,直接問 OpenClaw Expert,拿到可執行步驟。