SSH-доступ к удалённым серверам
Модуль SSH-доступа позволяет обслуживать второй сервер (например, сервер с нодой) прямо из меню скрипта на панели: обновить пакеты, перезапустить контейнер ноды, посмотреть логи, не открывая вторую SSH-сессию. Другой модуль, серверный роутинг, использует этот доступ автоматически, когда ставит ноду на второй сервер.
Пункт находится в меню скрипта: 4. Расширения ноды → SSH-доступ к удалённому серверу.
Как это работает
Заголовок раздела «Как это работает»Сервер панели хранит список целей (ноды, известные панели, или адреса, введённые вручную) и ssh-ключи. При настройке скрипт один раз ставит свой ключ на цель по паролю, дальше пароль не нужен. Все операции ходят по ключу: выполнение команд, обновление ноды и настройка серверов выхода для серверного роутинга.
Как выглядит модуль
Заголовок раздела «Как выглядит модуль»При первом входе список пуст, и модуль сразу предлагает настроить первый сервер:
SSH-доступ к удалённым серверам Подробности в wiki: https://wiki.egam.es/ru/configuration/ssh-remote-access Доступ не настроен 1.Настроить доступ 0.Выход Выберите действие (0-1):
Когда серверы уже есть, список выглядит так, с подписями и пометкой, каким ключом ходим:
SSH-доступ к удалённым серверам Подробности в wiki: https://wiki.egam.es/ru/configuration/ssh-remote-access Настроено серверов: 2 1.root@203.0.113.20:22 (Kazan) (наш ключ) 2.root@203.0.113.5:22 (Frankfurt) (наш ключ) 3.Настроить новый сервер 0.Выход Выберите действие (0-3):
Серверов может быть сколько угодно. При настройке можно задать каждому серверу название: оно отображается в скобках рядом с адресом и переименовывается в любой момент. Ключ у всех серверов один (панель = одна точка доступа), но на каждом сервере своя строка в authorized_keys.
Первая настройка
Заголовок раздела «Первая настройка»-
Выберите адрес сервера. Сначала скрипт спросит адрес руками, а если панель уже знает ноды, покажет их списком, чтобы выбрать готовый адрес:
Адрес сервера (IP или домен): 203.0.113.20 Ноды, известные панели 1.node.example.com (node-kazan) 2.Ввести адрес вручную
-
Порт, пользователь и подпись. Порт и пользователя можно оставить по умолчанию, Enter подставит
22иroot. Подпись это название сервера в списке:Порт SSH (Enter подставит 22): 22 Пользователь SSH (Enter подставит root): root Подпись сервера в списке SSH-подключений (Enter - без подписи): Kazan
-
Проба существующих ключей. Если на этом сервере уже есть ключ, который открывает второй сервер, скрипт молча возьмёт его: вопросы не задаются, на удалённом сервере ничего не меняется. Если не подошёл ни один, предложит четыре пути:
Пробуем ключи, которые уже есть на этом сервере... Ни один существующий ключ не подошёл Ключ не сработал, выберите, как продолжить: 1.Указать существующий ключ на этом сервере файл используется на месте, содержимое не читается 2.Ввести пароль root один раз нужен только чтобы поставить наш ключ, потом забывается 3.Показать наш публичный ключ для ручной установки для серверов, где парольный вход закрыт Выберите действие (1-3):
- Свой ключ: укажите путь до него, файл используется на месте.
- Пароль root один раз: скрипт спросит пароль (ввод скрыт), установит свой отдельный ключ и забудет его.
- Ручная вставка: для серверов с закрытым парольным входом скрипт покажет свой публичный ключ и команду, которую нужно выполнить на втором сервере. Проверка результата повторяется по
EnterEnterEnterEnterEnterEnter , выход из ожидания клавишейQQQQQQ .
-
Установка ключа паролем выглядит так:
Пароль root от 203.0.113.20 (ввод скрыт): Устанавливаем наш ключ на 203.0.113.20... Ключ установлен, пароль больше не нужен Доступ сохранён: root@203.0.113.20:22
Меню сервера
Заголовок раздела «Меню сервера»Выбор сервера из списка открывает его меню:
SSH-доступ к удалённым серверам Название: Kazan Настроено: root@203.0.113.20:22 Ключ: наш ключ 1.Проверить соединение 2.Выполнить команду 3.Переименовать 4.Перенастроить 5.Отозвать доступ 0.Выход Выберите действие (0-5):
Выполнение команд
Заголовок раздела «Выполнение команд»Пункт «Выполнить команду» запускает команду на удалённом сервере, вывод приходит в терминал, в конце скрипт покажет код завершения:
Команда для root@203.0.113.20:22: docker logs remnanode --tail 5 … вывод команды … Команда выполнена (код 0) Enter возвращает в меню...
Типовые сценарии:
apt update && apt upgrade -ycd /opt/remnanode && docker compose pull && docker compose up -ddocker logs remnanode --tail 50Под капотом: где это хранится
Все данные доступа лежат на панели в /usr/local/remnawave_reverse:
Директория/usr/local/remnawave_reverse
Директорияremote-exec
- 203.0.113.20_22.target (сервер: адрес, порт, пользователь, ключ, название)
- 203.0.113.5_22.target
- remote-exec.active (какой сервер использовался последним)
Директорияssh
- id_ed25519 (ключ скрипта, один на все серверы)
- known_hosts
Файлы .target обычные key=value, правятся вручную только в крайнем случае: меню переименования и перенастройки делает то же самое безопаснее.
Отзыв доступа
Заголовок раздела «Отзыв доступа»Пункт «Отозвать доступ» сначала объясняет, что произойдёт, и просит подтверждение:
Строка панели удалится из authorized_keys на сервере, сервер исчезнет из этого списка: панель больше не сможет заходить на неё по SSH. Нода и сервер продолжат работать. Служебный ключ сотрётся, только если им не пользуются другие серверы Отозвать SSH-доступ к root@203.0.113.20:22 (Kazan)? (y/n): y Отзываем... Доступ отозван
Ваш собственный доступ к серверу при этом не меняется никак.
