OpenClaw.app をリモート Gateway で使う
OpenClaw.app は SSH トンネルを使ってリモート Gateway に接続します。このガイドではその設定方法を説明します。
概要
flowchart TB
subgraph Client["クライアントマシン"]
direction TB
A["OpenClaw.app"]
B["ws://127.0.0.1:18789\n(ローカルポート)"]
T["SSH トンネル"]
A --> B
B --> T
end
subgraph Remote["リモートマシン"]
direction TB
C["Gateway WebSocket"]
D["ws://127.0.0.1:18789"]
C --> D
end
T --> C
クイックセットアップ
ステップ 1:SSH 設定の追加
~/.ssh/config を編集して以下を追加します:
Host remote-gateway
HostName <REMOTE_IP> # 例: 172.27.187.184
User <REMOTE_USER> # 例: jefferson
LocalForward 18789 127.0.0.1:18789
IdentityFile ~/.ssh/id_rsa
<REMOTE_IP> と <REMOTE_USER> を実際の値に置き換えてください。
ステップ 2:SSH 鍵のコピー
公開鍵をリモートマシンにコピーします(パスワードの入力は1回だけ):
ssh-copy-id -i ~/.ssh/id_rsa <REMOTE_USER>@<REMOTE_IP>
ステップ 3:Gateway トークンの設定
launchctl setenv OPENCLAW_GATEWAY_TOKEN "<your-token>"
ステップ 4:SSH トンネルの開始
ssh -N remote-gateway &
ステップ 5:OpenClaw.app の再起動
# OpenClaw.app を終了(⌘Q)してから再度開く:
open /path/to/OpenClaw.app
アプリが SSH トンネル経由でリモート Gateway に接続するようになります。
ログイン時にトンネルを自動起動
SSH トンネルをログイン時に自動的に開始するには、Launch Agent を作成します。
PLIST ファイルの作成
以下を ~/Library/LaunchAgents/ai.openclaw.ssh-tunnel.plist として保存します:
<?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>
Launch Agent の読み込み
launchctl bootstrap gui/$UID ~/Library/LaunchAgents/ai.openclaw.ssh-tunnel.plist
これでトンネルは以下のように動作します:
- ログイン時に自動的に開始
- クラッシュした場合は自動再起動
- バックグラウンドで常時実行
レガシーに関する注意:古い com.openclaw.ssh-tunnel LaunchAgent が残っている場合は削除してください。
トラブルシューティング
トンネルが動作しているか確認:
ps aux | grep "ssh -N remote-gateway" | grep -v grep
lsof -i :18789
トンネルの再起動:
launchctl kickstart -k gui/$UID/ai.openclaw.ssh-tunnel
トンネルの停止:
launchctl bootout gui/$UID/ai.openclaw.ssh-tunnel
仕組み
| コンポーネント | 役割 |
|---|---|
LocalForward 18789 127.0.0.1:18789 | ローカルポート 18789 をリモートポート 18789 に転送 |
ssh -N | リモートコマンドを実行せず SSH を使用(ポート転送のみ) |
KeepAlive | トンネルがクラッシュした場合に自動再起動 |
RunAtLoad | エージェント読み込み時にトンネルを開始 |
OpenClaw.app はクライアントマシンの ws://127.0.0.1:18789 に接続します。SSH トンネルがその接続を Gateway が動作しているリモートマシンのポート 18789 に転送します。