コンテンツにスキップ

リモートリンク

マシンリンクは SSH で OpenCodex の Home コンピューターと Child コンピューターを接続します。Home は SSH トンネルを通じて Child にサービスを提供し、両方のコンピューターはローカルの OpenCodex サービスを 10100 ポートで維持します。ダッシュボードは Child 専用のリンクキーを SSH で渡すため、トークンを入力する必要はありません。

  • Home から Child に OpenSSH キーでログインできること。
  • Child から開始するリンクでは、Child から Home に OpenSSH キーでログインできる必要があります(パスワードログインには対応していません)。
  • Child に OpenCodex 2.66.0 以降がインストールされていること(Child から開始するリンクでは Home にも)。
  • 両方のコンピューターが macOS または Linux であること。
  • リンクを開始するダッシュボードは、そのコンピューター上で直接開いたもの(スタンドアロン環境のブラウザーまたはデスクトップアプリ)か、ペアリング済みの Hub セッションであること。

パスワード SSH と Windows は現在のフローに含まれません。リンクはどちら側からでも開始できます。次の手順のように Home から開始するか、後述の「このコンピューターを Child として接続する」のように Child から開始します。

  1. ダッシュボードで #remote を開き、Remote Link をオンにします。
  2. Home を選び、Continue を押します。SSH ホストの一覧が開きます。
  3. SSH の候補からホストを選ぶか、SSH 設定のエイリアスを入力します。
  4. 接続テストを実行し、表示されたホストフィンガープリントを接続先コンピューターのものと比較します。比較すると、SSH がホストを信頼する前に、別のコンピューターや変更されたホストキーを検出できます。
  5. フィンガープリントを確認して Child を接続します。

ダッシュボードはトークンの入力を求めません。先にホストをプローブし、フィンガープリントを明示的に確認するまでリンクを適用しません。

このコンピューターを Child として接続する

Section titled “このコンピューターを Child として接続する”

Home のプロバイダーを使うコンピューターで次の操作を行います。

  1. ダッシュボードで #remote を開き、Remote Link をオンにします。
  2. Child を選びます。SSH ホストの一覧が開きます。
  3. Home の SSH ホストを選び、接続テストを実行してから、ホストのフィンガープリントを比較して確認します。
  4. 注意事項を読み、Connect as Child を選びます。

接続すると、このコンピューターの OpenCodex が再起動します。すでに実行中の Codex ターンは先に完了し、再起動中の最大 1 分間は新しいリクエストが失敗することがあります。その後ダッシュボードは自動的に再読み込みされ、Child のリンクを表示します。Codex はこのコンピューターの http://127.0.0.1:<port>/v1 を使い続け、トークンや環境変数の設定は不要です。ローカルの OpenCodex が各リクエストを Home に中継し、Home が自身のプロバイダーとアカウントで応答します。

Child の役割は、OpenCodex が設定されたポートで動作している間だけ選択できます。Child はまさにそのポートで再起動するためです。設定されたポートで動作していないとダッシュボードに表示された場合は、先にそのポートで OpenCodex を再起動してください。

  • Connected は SSH トンネルが準備でき、Child が Home のリンクを使える状態です。
  • Reconnecting はトンネルを再試行している状態です。再試行中はリクエストが Retry-After 付きの 503 を一時的に返すことがあります。自分のダッシュボードから接続した Child では、リクエストはまずトンネルの復帰を最大 15 秒待ちます。
  • Failed は対応が必要な状態です。SSH 認証、確認済みのホストキー、転送、タイムアウトの理由を確認してください。自分のダッシュボードから接続した Child は、スリープ、障害、再起動の後も自動で再試行します。タイムアウトや転送エラーの後は約 1 分ごと、認証エラーの後は 5 分ごとです。ホストキーが変わった場合は再試行しません。

リンクが失敗しても、ローカルプロバイダーへ自動的に切り替わることはありません。

Child の Disconnect を選び、エイリアスを確認します。Home はトンネルを停止し、その Child のリンクキーを失効させ、保存されたリンク記録を削除します。

Home から Child に接続解除コマンドを実行できない場合は Remove here only を選びます。これでこのコンピューターのトンネル、キー、記録だけを削除します。その後 Child にログインして実行します。

Terminal window
ocx disconnect

Child から開始したリンクを切断するには、Child で ocx disconnect を実行します。このコマンドはクライアントトンネルを切断し、SSH 経由で Home のリンクを失効させます。Home での失効に失敗すると、次のメッセージが表示されます: Home revoke failed; run ocx link revoke --link-id <linkId> on the home.

Child はリンクを通じて Home コンピューターのプロバイダーとプロバイダー認証情報を使います。Home は Child ごとに別のリンクキーを作り、リンクを削除するとそのキーを失効させます。確認前にホストフィンガープリントを比較し、別のコンピューターや変更されたホストキーを誤って受け入れないようにしてください。Tailscale の ID から発行されたダッシュボードセッションはマシンリンクを管理できません。 Child ではキーは OpenCodex の中にとどまります。Codex や Claude Code が Child で送る認証情報は Home に転送されず、Child で 127.0.0.1:<port> に到達できるプログラムはキーなしで Home を使えます。これはスタンドアロン環境がローカルのプログラムに与えるのと同じ信頼です。他のサイトの Web ページは拒否されます。

ocx link port [--json]
ocx link issue --alias <alias> --tunnel-port <port> [--json]
ocx link status [--json]
ocx link revoke --link-id <id> [--json]