Перейти к содержимому

Удалённая связь

Связь между машинами соединяет компьютер OpenCodex Home с компьютером Child по SSH. Home обслуживает Child через SSH-туннель, а оба компьютера сохраняют локальную службу 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.

Панель не просит вводить токен. Сначала выполняется проверка хоста, и применить связь можно только после явного подтверждения отпечатка.

На компьютере, который должен использовать провайдеров Home:

  1. Откройте панель на #remote и включите Remote Link.
  2. Выберите Child. Откроется список SSH-хостов.
  3. Выберите SSH-хост Home, запустите проверку подключения, затем сравните и подтвердите отпечаток хоста.
  4. Прочитайте предупреждение и выберите Connect as Child.

При подключении OpenCodex на этом компьютере перезапустится. Уже идущие запросы Codex сначала завершатся, а новые запросы могут не проходить до минуты, пока идёт перезапуск. Затем панель перезагрузится сама и покажет связь Child. Codex продолжит использовать http://127.0.0.1:<port>/v1 на этом компьютере без токена и без переменных окружения: локальный OpenCodex передаёт каждый запрос на Home, а Home обслуживает его своими провайдерами и учётными записями.

Роль Child доступна, только пока OpenCodex работает на настроенном порту, потому что Child перезапускается именно на нём. Если панель сообщает, что OpenCodex работает не на настроенном порту, сначала перезапустите его на этом порту.

  • Connected означает, что SSH-туннель готов и Child может использовать связь Home.
  • Reconnecting означает, что туннель переподключается. Во время повторных попыток запросы могут временно получать 503 с Retry-After. На Child, подключённом из собственной панели, запрос сначала до 15 секунд ждёт восстановления туннеля.
  • Failed означает, что связь требует действий. Проверьте SSH-аутентификацию, подтверждённый ключ хоста, перенаправление или причину тайм-аута. Child, подключённый из собственной панели, сам повторяет попытки после сна, сбоя или перезапуска: примерно раз в минуту после тайм-аута или ошибки перенаправления и каждые пять минут после ошибки аутентификации. Изменённый ключ хоста никогда не повторяется.

При сбое связи система молча не переключается на локального провайдера.

Выберите Disconnect для Child и подтвердите псевдоним. Home остановит туннель, отзовёт ключ связи этого Child и удалит сохранённую запись.

Если Home не может подключиться к Child для выполнения команды отключения, выберите Remove here only. Это удаляет локальные туннель, ключ и запись. Затем войдите на Child и выполните:

Terminal window
ocx disconnect

Чтобы отключить связь, инициированную со стороны Child, выполните ocx disconnect на Child. Команда отключает клиентский туннель и по SSH отзывает связь на Home. Если отзыв на Home не удался, команда выводит: Home revoke failed; run ocx link revoke --link-id <linkId> on the home.

Child использует через связь провайдеров и учётные данные провайдеров компьютера Home. Home создаёт отдельный ключ связи для каждого Child; удаление связи отзывает этот ключ. Сравнивайте отпечаток хоста перед подтверждением, чтобы случайно не принять другой компьютер или изменённый ключ. Сессии панели, выданные удостоверением Tailscale, не могут управлять связями машин. На Child ключ остаётся внутри OpenCodex: учётные данные, которые Codex или Claude Code отправляют на Child, не передаются на Home, а любая программа на Child, которая обращается к 127.0.0.1:<port>, использует Home без ключа; это то же локальное доверие, что и у автономной установки. Веб-страницы с других сайтов отклоняются.

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