Установка ноды по 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: см. Релизы и подпись. Его состояние показывает карточка Пакет релиза на странице «Обновления».
Четыре шага#
- Сервер. Введите Адрес SSH-сервера и Порт SSH (обычно 22) и нажмите Проверить сервер. Панель читает SSH host key сервера со своего сервера. Логин и пароль пока не отправляются.
- Ключ SSH. Сверьте отпечаток SHA-256 и тип ключа с надёжной копией: той, что показывает консоль хостера, или выводом
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub, выполненным на сервере через эту консоль. Не подтверждайте ключ, который не можете проверить. Поставьте галочку подтверждения и заполните данные ноды: Имя, Адрес (публичный домен или IP для клиентов), Страна, Регион или город, Провайдер, SSH-логин (по умолчаниюroot) и Пароль SSH. Продолжить может попросить ещё раз подтвердить вход (см. «Повторное подтверждение входа» в Безопасности), затем входит строго с подтверждённым ключом и запускает проверку. - Проверка. Посмотрите Система, Архитектура, Ядро, Процессоры, Память, Свободно на диске, systemd и Связь с панелью. Введите пароль ещё раз, отметьте «Установить агент Mistgate и создать ноду» и нажмите Запустить установку. До этого момента сервер не меняется.
- Установка. Задание идёт в панели по этапам: подключение по SSH, проверка сервера, настройка firewall сервера, передача агента, регистрация ноды, запуск агента, ожидание подключения ноды. Закрыть, оставить установку в фоне закрывает окно, задание продолжается. Когда агент подключится, окно напишет «Нода установлена и подключена» и предложит Открыть ноду. Если задание не удалось, окно назовёт причину и предложит Повторить установку с паролем или Открыть менеджер установки.
Профиля на новой ноде пока нет: дальше — Первые пользователи.
Что панель делает на сервере#
Всё идёт по одному SSH-соединению, которое принимает только подтверждённый host key. Для логина, отличного от root, каждая команда выполняется через sudo -n.
- Проверка. Панель читает ОС, архитектуру, ядро, процессоры, память, свободное место в
/rootи наличие systemd, проверяет, нет ли на сервере уже данных ноды Mistgate, и может ли сервер открыть TCP-соединение с адресом панели для агентов (тест на 5 секунд). - Firewall сервера. Меняется только уже активный firewall; неактивный остаётся выключенным. В UFW добавляется SSH-порт, затем 80/tcp, 443/tcp и 443/udp с комментарием
mistgate-node-provision-v1— кроме портов, для которых у вас уже есть такое же правило. В firewalld SSH-порт, 80/tcp, 443/tcp и 443/udp добавляются во все активные зоны сразу и постоянно, без перезагрузки правил, которая сбросила бы временные правила. - Агент. Панель передаёт агента под архитектуру сервера из доверенного пакета в
/root/mistgate-node, сверяет размер и SHA-256 и делает файл исполняемым. - Регистрация. Панель запускает
mistgate-node enrollс одноразовым токеном, который действует час. Токен передаётся через стандартный ввод (--token-stdin) и никогда не попадает в командную строку.--resume-keyсохраняет ожидающий ключ на диске, чтобы прерванную регистрацию можно было повторить с тем же ключом. - Служба. Панель запускает
mistgate-node install: он пишет защищённый юнит systemd и запускает агента — так же, как при ручной установке (см. «Что происходит на сервере» в Добавлении ноды). - Подключение. Панель до 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, только если той ноды больше нет). |