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

SSH-доступ к удалённым серверам

Модуль SSH-доступа позволяет обслуживать второй сервер (например, сервер с нодой) прямо из меню скрипта на панели: обновить пакеты, перезапустить контейнер ноды, посмотреть логи, не открывая вторую SSH-сессию. Другой модуль, серверный роутинг, использует этот доступ автоматически, когда ставит ноду на второй сервер.

Пароль спрашивается один раз

Скрипт установит свой ключ и забудет пароль: на диск он не пишется никогда.

Ваш ключ не читается

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

Одна строка в authorized_keys

Ключ скрипта живёт отдельной строкой с пометкой remnawave-reverse-proxy, ваши строки не трогаются.

Пункт находится в меню скрипта: 4. Расширения ноды → SSH-доступ к удалённому серверу.

сервер панелимодуль SSH-доступа скриптаключи и цели:/usr/local/remnawave_reversessh-целинода · de-fra-01команды, настройка нодывыходной серверnl-ams-02 · мостнаш ключкомандыоткуда берутся целиноды панели или адрес вручнуюподдерживаются адреса netbird

Сервер панели хранит список целей (ноды, известные панели, или адреса, введённые вручную) и ssh-ключи. При настройке скрипт один раз ставит свой ключ на цель по паролю, дальше пароль не нужен. Все операции ходят по ключу: выполнение команд, обновление ноды и настройка серверов выхода для серверного роутинга.

При первом входе список пуст, и модуль сразу предлагает настроить первый сервер:

root@server: ~
SSH-доступ к удалённым серверам
 Подробности в wiki: https://wiki.egam.es/ru/configuration/ssh-remote-access

 Доступ не настроен

1.Настроить доступ

0.Выход

Выберите действие (0-1):

Когда серверы уже есть, список выглядит так, с подписями и пометкой, каким ключом ходим:

root@server: ~
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.

  1. Выберите адрес сервера. Сначала скрипт спросит адрес руками, а если панель уже знает ноды, покажет их списком, чтобы выбрать готовый адрес:

    root@server: ~
    Адрес сервера (IP или домен): 203.0.113.20
    
    Ноды, известные панели
    
    1.node.example.com (node-kazan)
    2.Ввести адрес вручную
  2. Порт, пользователь и подпись. Порт и пользователя можно оставить по умолчанию, Enter подставит 22 и root. Подпись это название сервера в списке:

    root@server: ~
    Порт SSH (Enter подставит 22): 22
    Пользователь SSH (Enter подставит root): root
    Подпись сервера в списке SSH-подключений (Enter - без подписи): Kazan
  3. Проба существующих ключей. Если на этом сервере уже есть ключ, который открывает второй сервер, скрипт молча возьмёт его: вопросы не задаются, на удалённом сервере ничего не меняется. Если не подошёл ни один, предложит четыре пути:

    root@server: ~
    Пробуем ключи, которые уже есть на этом сервере...
    Ни один существующий ключ не подошёл
    
    Ключ не сработал, выберите, как продолжить:
    
    1.Указать существующий ключ на этом сервере
       файл используется на месте, содержимое не читается
    2.Ввести пароль root один раз
       нужен только чтобы поставить наш ключ, потом забывается
    3.Показать наш публичный ключ для ручной установки
       для серверов, где парольный вход закрыт
    
    Выберите действие (1-3):
    • Свой ключ: укажите путь до него, файл используется на месте.
    • Пароль root один раз: скрипт спросит пароль (ввод скрыт), установит свой отдельный ключ и забудет его.
    • Ручная вставка: для серверов с закрытым парольным входом скрипт покажет свой публичный ключ и команду, которую нужно выполнить на втором сервере. Проверка результата повторяется по EnterEnterEnter, выход из ожидания клавишей QQQ.
  4. Установка ключа паролем выглядит так:

    root@server: ~
    Пароль root от 203.0.113.20 (ввод скрыт): 
    Устанавливаем наш ключ на 203.0.113.20...
    Ключ установлен, пароль больше не нужен
    
    Доступ сохранён: root@203.0.113.20:22

Выбор сервера из списка открывает его меню:

root@server: ~
SSH-доступ к удалённым серверам

 Название: Kazan
 Настроено: root@203.0.113.20:22
 Ключ: наш ключ

1.Проверить соединение
2.Выполнить команду
3.Переименовать
4.Перенастроить
5.Отозвать доступ

0.Выход

Выберите действие (0-5):

Пункт «Выполнить команду» запускает команду на удалённом сервере, вывод приходит в терминал, в конце скрипт покажет код завершения:

root@server: ~
Команда для root@203.0.113.20:22: docker logs remnanode --tail 5
… вывод команды …
Команда выполнена (код 0)
Enter возвращает в меню...

Типовые сценарии:

Обновление пакетов на удалённом сервере
apt update && apt upgrade -y
Обновление ноды (команды стартуют в /root, compose нужен cd)
cd /opt/remnanode && docker compose pull && docker compose up -d
Логи ноды
docker 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, правятся вручную только в крайнем случае: меню переименования и перенастройки делает то же самое безопаснее.

Пункт «Отозвать доступ» сначала объясняет, что произойдёт, и просит подтверждение:

root@server: ~
Строка панели удалится из authorized_keys на сервере, сервер исчезнет из этого списка: панель больше не сможет заходить на неё по SSH. Нода и сервер продолжат работать. Служебный ключ сотрётся, только если им не пользуются другие серверы
Отозвать SSH-доступ к root@203.0.113.20:22 (Kazan)? (y/n): y
Отзываем...
Доступ отозван

Ваш собственный доступ к серверу при этом не меняется никак.