mistgate Документация

Установка ноды по SSH

Как панель сама ставит агента ноды на новый сервер по SSH, как следить за заданиями установки, отменять и повторять их и как устроен сохранённый SSH-доступ.

На этой странице

При установке по SSH панель сама подключается к новому серверу, проверяет его, ставит агента ноды и ждёт, пока он подключится: ничего не нужно копировать на сервер и вставлять команды. Это работа владельца, она начинается в Ноды → Добавить ноду → Запустить автоустановку по SSH. Ту же установку может запустить AI-агент через MCP, а вы одобряете её в админке: см. инструкцию для AI-агента. Если панель не может подключиться к серверу по SSH, используйте ручную установку.

Что понадобится#

  • Сервер с Ubuntu 22.04 или новее либо Debian 12 или новее, amd64 или arm64, с systemd, хотя бы 256 МиБ памяти и местом в /root для агента (его размер плюс 64 МиБ). См. Требования.
  • Вход по SSH с паролем — как root или как пользователь, которому sudo -n разрешён без пароля. Вход по SSH-ключу не поддерживается. Адрес должен быть публичным: приватные, loopback- и link-local-адреса отклоняются.
  • SSH, открытый для сервера панели. Если firewall или security group хостера ограничивают SSH, сначала разрешите входящий TCP на SSH-порт с публичного исходящего адреса сервера панели. Панель может менять только firewall на самом сервере и только после SSH-подключения.
  • Адрес панели для агентов, доступный с сервера: публичный адрес панели на TCP 443 или адрес из serve --agent-addr. Проверка тестирует это.
  • Публичный адрес, известный панели: setup --public-url или serve --agent-addr. Без него мастер пишет «Не настроен публичный адрес панели».
  • Доверенный пакет агента ноды с неистёкшим сроком в каталоге данных панели. Панель из официального релиза скачивает его из GitHub Releases при запуске и потом каждые 10 минут. Панели, которую вы собрали сами, нужен подписанный вами пакет в <data-dir>/dist: см. Релизы и подпись. Его состояние показывает карточка Пакет релиза на странице «Обновления».

Четыре шага#

  1. Сервер. Введите Адрес SSH-сервера и Порт SSH (обычно 22) и нажмите Проверить сервер. Панель читает SSH host key сервера со своего сервера. Логин и пароль пока не отправляются.
  2. Ключ SSH. Сверьте отпечаток SHA-256 и тип ключа с надёжной копией: той, что показывает консоль хостера, или выводом ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub, выполненным на сервере через эту консоль. Не подтверждайте ключ, который не можете проверить. Поставьте галочку подтверждения и заполните данные ноды: Имя, Адрес (публичный домен или IP для клиентов), Страна, Регион или город, Провайдер, SSH-логин (по умолчанию root) и Пароль SSH. Продолжить может попросить ещё раз подтвердить вход (см. «Повторное подтверждение входа» в Безопасности), затем входит строго с подтверждённым ключом и запускает проверку.
  3. Проверка. Посмотрите Система, Архитектура, Ядро, Процессоры, Память, Свободно на диске, systemd и Связь с панелью. Введите пароль ещё раз, отметьте «Установить агент Mistgate и создать ноду» и нажмите Запустить установку. До этого момента сервер не меняется.
  4. Установка. Задание идёт в панели по этапам: подключение по SSH, проверка сервера, настройка firewall сервера, передача агента, регистрация ноды, запуск агента, ожидание подключения ноды. Закрыть, оставить установку в фоне закрывает окно, задание продолжается. Когда агент подключится, окно напишет «Нода установлена и подключена» и предложит Открыть ноду. Если задание не удалось, окно назовёт причину и предложит Повторить установку с паролем или Открыть менеджер установки.

Профиля на новой ноде пока нет: дальше — Первые пользователи.

Что панель делает на сервере#

Всё идёт по одному SSH-соединению, которое принимает только подтверждённый host key. Для логина, отличного от root, каждая команда выполняется через sudo -n.

  1. Проверка. Панель читает ОС, архитектуру, ядро, процессоры, память, свободное место в /root и наличие systemd, проверяет, нет ли на сервере уже данных ноды Mistgate, и может ли сервер открыть TCP-соединение с адресом панели для агентов (тест на 5 секунд).
  2. Firewall сервера. Меняется только уже активный firewall; неактивный остаётся выключенным. В UFW добавляется SSH-порт, затем 80/tcp, 443/tcp и 443/udp с комментарием mistgate-node-provision-v1 — кроме портов, для которых у вас уже есть такое же правило. В firewalld SSH-порт, 80/tcp, 443/tcp и 443/udp добавляются во все активные зоны сразу и постоянно, без перезагрузки правил, которая сбросила бы временные правила.
  3. Агент. Панель передаёт агента под архитектуру сервера из доверенного пакета в /root/mistgate-node, сверяет размер и SHA-256 и делает файл исполняемым.
  4. Регистрация. Панель запускает mistgate-node enroll с одноразовым токеном, который действует час. Токен передаётся через стандартный ввод (--token-stdin) и никогда не попадает в командную строку. --resume-key сохраняет ожидающий ключ на диске, чтобы прерванную регистрацию можно было повторить с тем же ключом.
  5. Служба. Панель запускает mistgate-node install: он пишет защищённый юнит systemd и запускает агента — так же, как при ручной установке (см. «Что происходит на сервере» в Добавлении ноды).
  6. Подключение. Панель до 2 минут ждёт подключения агента, затем сохраняет SSH-доступ (в зашифрованном виде) и завершает задание.

Дальше агент сам держит UFW в соответствии со своими профилями: применив включённый UDP inbound, он добавляет в активный UFW этот точный порт и принятый диапазон прыжков по портам Hysteria2 — правилами, помеченными как свои. Правило для того же порта, которое добавил не он, агент никогда не меняет и не удаляет. UFW запускается вне песочницы агента, временным юнитом systemd. firewalld только проверяется: агент называет порты, которых нет в зоне по умолчанию, а добавляете их вы. Если firewall сервера не удалось привести в порядок, у ноды появится одно предупреждение host_firewall_sync_failed, а inbound продолжит работать. Вывод ноды из флота удаляет помеченные правила, включая правила 80/443 от установки; правило SSH не удаляется никогда.

Задания установки и менеджер установки#

Каждая установка — это задание, которое панель хранит. Менеджер установки по адресу <адрес админки>nodes/install показывает последние 100 заданий с их состоянием (в очереди, установка, остановка, отменено, нода подключена, ошибка) и сохранённые доступы к серверам. Страница задания показывает его этапы, обновляется каждые 4 секунды и никогда не показывает вывод с сервера. Открыть её может только владелец.

Важно

страница менеджера установки пока только на русском; мастер в Ноды → Добавить ноду говорит на языке админки.

  • Отмена. Задание в очереди останавливается сразу, его временные SSH-данные удаляются. Идущее задание получает запрос на остановку; команда, которая уже выполняется на сервере, могла его изменить, поэтому перед повтором проверьте сервер.
  • Повтор. Неудачное или отменённое задание можно запустить снова с SSH-логином и паролем. Проверка увидит, есть ли на сервере уже данные этой ноды, и задание продолжится с того места; сервер с данными другой ноды отклоняется. Задание ноды, выведенной из флота, повторить нельзя: начните новую установку.
  • Имена. Имя ноды занято, пока нода активна или для неё идёт установка. Вывод ноды сохраняет историю и освобождает имя.
  • Пароль. Пока задание идёт, SSH-пароль хранится зашифрованным мастер-ключом панели и привязан к этому заданию. Когда задание заканчивается, он удаляется; при успехе он становится сохранённым доступом ноды.

Сохранённый SSH-доступ#

После успешной установки панель хранит SSH-логин и пароль, зашифрованные мастер-ключом, вместе с закреплённым host key. Ни запросы API, ни инструменты MCP, ни логи никогда не возвращают пароль.

  • Посмотреть. Карточка Настройки → SSH-доступ на странице ноды показывает SSH-сервер и логин. Показать пароль просит ещё раз подтвердить вход и записывается в журнал аудита.
  • Сменить. В менеджере установки таблица доступов к серверам принимает новый пароль не короче 12 символов. Через MCP node_server_password_rotate поручает панели сгенерировать пароль; агент его не видит. В обоих случаях панель сначала сохраняет новый пароль как ожидающий, меняет его на сервере через chpasswd, заново входит с ним и только потом заменяет сохранённый.
  • Прерванная смена. Если сервер не подтвердил новый пароль, следующий показ или смена сначала пробует оба. Если сервер недоступен и нельзя узнать, какой вход работает, Показать пароль покажет «Текущий пароль (не проверен)» и «Новый пароль из прерванной смены (не проверен)»: сначала пробуйте текущий. Новая смена подождёт, пока сервер не ответит. Если сервер отвергает оба, сбросьте пароль через консоль хостера.
  • Пароль, сгенерированный панелью. Его знает только панель, и карточка об этом пишет. Покажите его и сохраните копию, прежде чем выводить ноду.
  • Выведенная нода. Её карточка SSH-доступа остаётся: панель больше не меняет этот сервер, но пароль по-прежнему можно показать. Забыть сохранённый доступ — с двойным подтверждением и свежим подтверждением входа — удаляет его насовсем. Забыть можно только доступ выведенной ноды.

Если не получилось#

Мастер пишет Что делать
Панель не получила ответ от SSH-сервера вовремя Проверьте, что SSH работает на этом порту, и разрешите входящий TCP с исходящего адреса сервера панели в firewall хостера. Если SSH закрывает firewall сервера, откройте его через консоль хостера.
Панель не смогла получить SSH-ключ по этому адресу Проверьте адрес, порт и SSH-службу.
Укажи публичный адрес сервера, доступный по SSH Адрес приватный, loopback, link-local или не резолвится. Укажите публичный адрес сервера.
Сервер отклонил SSH-логин или пароль Проверьте оба; панель поддерживает только вход по паролю.
После подтверждения SSH-ключ изменился Сервер теперь показывает другой host key: прежде чем начинать заново, выясните почему.
Нужна Ubuntu 22.04 или новее либо Debian 12 или новее / Поддерживаются архитектуры amd64 и arm64 Сервер не поддерживается; ручную установку пробуйте, только если знаете, что агент там работает.
Для SSH-пользователя нужен root-доступ или беззапросный sudo Войдите как root или разрешите пользователю sudo -n.
Не настроен публичный адрес панели, поэтому нода не сможет подключиться обратно Это же сообщение появляется, когда сервер не может достучаться до адреса панели для агентов. Проверьте --public-url или --agent-addr, DNS и исходящий TCP с ноды к панели.
Это имя ноды уже занято Выберите другое имя или сначала выведите старую ноду.
Панель подключилась, но не смогла настроить активные правила UFW/firewalld Проверьте root или sudo -n у пользователя и firewall сервера, затем повторите.
SSH прервался после изменений на сервере Часть команд установки могла выполниться. Посмотрите на сервер, затем повторите.
Агент установился, но не подключился к панели На сервере: journalctl -u mistgate-node -n 50 --no-pager. Обычно нода не может достучаться до адреса панели для агентов.
Mistgate не смог установить или запустить службу systemd Посмотрите журнал сервера, затем повторите.
Установка остановилась. Открой менеджер установки для подробностей Менеджер покажет точную причину: например, нет доверенного пакета агента (смотрите Пакет релиза на странице «Обновления»), мало памяти или места на диске, или на сервере данные другой ноды (удаляйте там /var/lib/mistgate-node, только если той ноды больше нет).

Править страницу на GitHub