跳到內容

遠端存取你的 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

Terminal window
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",
},
},
}
Terminal window
Host remote-gateway
HostName <REMOTE_IP>
User <REMOTE_USER>
LocalForward 18789 127.0.0.1:18789
IdentityFile ~/.ssh/id_rsa
Terminal window
ssh-copy-id -i ~/.ssh/id_rsa <REMOTE_USER>@<REMOTE_IP>
Terminal window
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>
Terminal window
launchctl bootstrap gui/$UID ~/Library/LaunchAgents/ai.openclaw.ssh-tunnel.plist
Terminal window
ps aux | grep "ssh -N remote-gateway" | grep -v grep
lsof -i :18789
Terminal window
launchctl kickstart -k gui/$UID/ai.openclaw.ssh-tunnel
Terminal window
launchctl bootout gui/$UID/ai.openclaw.ssh-tunnel
OpenClaw

OpenClaw Expert

還是卡住了?

如果這篇文件沒有解決你的情境,直接問 OpenClaw Expert,拿到可執行步驟。