Аутентификация и безопасность

Доступ к CodeNomad позволяет выполнять работу на серверном хосте через OpenCode. Считайте пароли сервера, браузерные сессии и сопряжённые устройства мощными учётными данными. CodeNomad — не многопользовательская песочница выполнения.

Выбор аутентификации сервера

Способ Время жизни и область
--password или CODENOMAD_SERVER_PASSWORD Переопределение, переданное при запуске процесса серверной части. Нужно снова при каждом запуске; не сохраняется. Имеет приоритет над управляемым файлом пароля.
Пароль в настройках Сохраняет хэш scrypt с солью в auth.json рядом с активной конфигурацией YAML. Используется при следующих запусках, если при запуске не передан другой пароль.
--generate-token Включает локальную одноразовую начальную настройку; напечатанный токен действует 60 секунд. Это не повторно используемый API-токен и не ссылка удалённого управления.
Сопряжение удалённого управления Отдельная аутентификация cookie устройства, управляемая с хоста; см. удалённое управление.

Имя пользователя по умолчанию — codenomad. Сохранённый файл аутентификации сохраняет имя; изменение только --username не переименовывает эту идентичность. Без настроенного пароля, режима начальной настройки или явно пропущенной аутентификации сервер отказывается запускаться.

Предпочитайте защищённое окружение/секрет службы встраиванию пароля в аргументы команд или историю оболочки. Любой, кто может изучить окружение процесса или каталог конфигурации, всё равно может скомпрометировать развёртывание.

Начальная настройка постоянного пароля

  1. Запустите локально, не передавая пароль при запуске. Для настройки через loopback без предварительного сертификата используйте codenomad --host 127.0.0.1 --https=false --http=true --generate-token --launch.
  2. На компьютере серверной части откройте /auth/token по напечатанному Local Connection URL и отправьте значение после CODENOMAD_BOOTSTRAP_TOKEN:. Не делитесь этим выводом.
  3. Откройте Настройки → Удалённый доступ → Прямой доступ (локальная сеть, для опытных) → Пароль сервера.
  4. Выберите Установить пароль, заполните Новый пароль и Подтвердите пароль минимум восемью символами, затем Сохранить пароль.
  5. При следующем запуске уберите --generate-token и используйте сохранённый пароль для прямых подключений. Перед включением удалённого доступа настройте доверенный HTTPS; команда настройки loopback HTTP не предназначена для удалённого развёртывания.

Начальная настройка принимается только с собственного loopback-слушателя хоста, не от LAN-клиента или входа удалённого управления. Оставьте стандартную loopback-привязку для настройки. Истёкший или использованный токен требует нового запуска начальной настройки. Если постоянный пароль уже есть, сессия настройки позволяет выбрать Изменить пароль.

auth.json управляется приложением; не правьте хэш вручную и не публикуйте файл. Если пароль пришёл из CLI/окружения, настройки отказываются заменять его: перезапустите без переопределения для существующего управляемого пароля или задайте его локальной начальной настройкой. Нечитаемый/незаписываемый файл требует исправления прав ОС/пути, не отключения аутентификации.

Браузерные сессии и отзыв

Прямой вход создаёт непрозрачную сессию в памяти серверной части и cookie codenomad_session (или настроенное имя). Cookie имеют HttpOnly, SameSite=Lax, область / и Secure при выдаче через HTTPS. Это сессионные cookies браузера; перезапуск серверной части делает сессии в памяти недействительными. При запросе войдите заново на месте, а не повторяйте неудачные изменения.

Изменение пароля меняет последующие проверки данных; не аннулирует уже выданные прямые сессии или устройства удалённого управления. При подозрении на компрометацию:

  1. Ограничьте сетевую доступность и задайте новый пароль на хосте либо измените пароль, передаваемый при запуске, и перезапустите.
  2. Перезапустите серверную часть для аннулирования существующих прямых сессий.
  3. В Удалённое управление → Сопряжённые устройства отдельно используйте Отозвать для неизвестных устройств. Остановите удалённое управление, если нужно немедленно перекрыть весь его путь доступа.
  4. Проверьте затронутые файлы, аккаунты провайдеров и нативную активность OpenCode. Остановка доступа не откатывает уже допущенную работу.

Отдельный срок 30 дней бездействия и пятиминутные ссылки описаны в удалённом управлении. Смена пароля не отзывает устройство, а остановка туннеля не удаляет устройство.

Защита транспорта и доступности слушателей

Используйте доверенный HTTPS для прямого удалённого доступа. Обычный HTTP раскрывает пароли, сессионные cookies и рабочий контент любому наблюдателю этого сетевого участка. Если TLS завершается на обратном прокси, оставьте участок до серверной части на loopback или другой защищённой сети; TLS прокси не шифрует открытое HTTP-соединение к серверной части.

--dangerously-skip-auth / CODENOMAD_SKIP_AUTH отключает вход прямых слушателей CodeNomad и считает запросы аутентифицированными. Это не делает сервер безопасным для публикации. Слушатель без защищающего периметра предоставляет доступ любому, кто может до него добраться; одно VPN-подключение не различает доверенных и недоверенных пользователей VPN. Оставьте аутентификацию включённой, если не спроектировали и не проверили независимо каждый путь доступа. Удалённому управлению всё равно нужно сопряжённое устройство даже с этим флагом.

Проверьте матрицу привязок и процедуры TLS, особенно отдельный режим только HTTP: он учитывает --host и может раскрыть незашифрованный трафик вне loopback. Никогда не решайте ошибки сертификата отключением проверки.

CODENOMAD_SKIP_AUTH=false сохраняет аутентификацию включённой, если не передан --dangerously-skip-auth. 1, true, yes или on включают обход аутентификации, без учёта регистра и пробельных символов по краям; 0, false, no, off, пустое значение или значение только из пробельных символов, а также отсутствие переменной оставляют обход выключенным. Любое другое значение запрещает запуск сервера, даже с флагом CLI. Флаг имеет приоритет над допустимым выключающим значением; см. справочник CLI.

Граница хоста

--workspace-root ограничивает открываемые рабочие пространства, а --unrestricted-root расширяет просмотр. Ни один не является изоляцией ОС, контейнером, песочницей файловой системы или ограничением полномочий авторизованного нативного инструмента. Агенты, команды оболочки, плагины и MCP-инструменты действуют с правами хоста выполнения и собственными настроенными учётными данными.

SideCars — доверенные дополнения. CodeNomad не передаёт службе SideCar свои cookies входа и сопряжённых устройств, но страница SideCar загружается в том же источнике (origin), что и CodeNomad, и её скрипты могут действовать с вашей сессией входа. Регистрируйте только службы, которым доверяете так же, как самому CodeNomad.

Для реальной изоляции используйте учётные записи ОС, контейнеры/ВМ и настройки разрешений upstream. Не давайте устройству доступ лишь потому, что ожидаете показ одной вкладки. Конфигурация сервера и общая служба OpenCode могут влиять на другие разговоры/проекты; их отдельные границы описаны в настройке OpenCode, разрешениях и расширениях.

Конфиденциальность учётных данных и диагностики

OpenCode владеет подключениями провайдеров и глобальным хранилищем разговоров. CodeNomad читает метаданные подключений и выбранные учётные данные на серверной стороне для поддерживаемых интеграций использования; браузерные API не возвращают секреты провайдеров. Обновление чужого входа OAuth принадлежит его владельцу; CodeNomad не обменивает эти токены обновления. См. провайдеры.

Материал Обращение
Пароли, токены начальной настройки, ссылки сопряжения, cookies Никогда не вставляйте в задачи, снимки экрана, записи оболочки или общие логи.
auth.json, закрытые ключи TLS, идентичность туннеля, секреты конфигурации Защищайте правами ОС и шифрованными резервными копиями; не загружайте целые каталоги для поддержки.
Текст разговоров, вложения, пути рабочего пространства и удалённые адреса Проверяйте/скрывайте перед передачей; могут идентифицировать людей, проекты или инфраструктуру.
Ключи провайдеров и речи Вводите только у нужного владельца настроек/данных; проверяйте получателя данных. См. голос.
Логи debug/trace и сетевые захваты Собирайте только необходимое, проверяйте локально и очищайте перед отчётом. Не предполагайте отсутствие секретов в выводе каждого нижележащего инструмента.

Настройки → Информация → Сообщить об ошибке готовит ограниченную диагностику без подстановки слушателей, адресов, путей, учётных данных или контента разговора. Проверьте собственные дополнения перед отправкой. См. поддержку.