Внутренняя панель через SSH-туннель: где открывается порт и кто идёт к сервису

Панель управления слушает только внутренний адрес. Чтобы посмотреть её с ноутбука, не обязательно открывать порт на внешнем интерфейсе. SSH может принять соединение локально и передать его до сервиса через сервер, к которому у вас уже есть разрешённый доступ. Главное — правильно понять, с какой машины интерпретируется адрес назначения.

Нарисуйте путь одного соединения

ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:18080:127.0.0.1:8080 operator@app.example

Команда запускается на ноутбуке. Первый адрес 127.0.0.1:18080 — локальный слушатель ноутбука. Последний адрес 127.0.0.1:8080 доступен с SSH-сервера app.example. Следовательно, здесь открывается панель, работающая на loopback удалённой машины. Параметр N означает, что удалённая команда не запускается.

Если приложение находится на отдельной машине, замените последнее назначение, например на 10.20.0.40:8080. Доступ к этому адресу проверяется со стороны SSH-сервера. Работоспособность прямого маршрута от ноутбука к 10.20.0.40 для такого туннеля не требуется.

Проверьте настройку и приложение отдельно

curl --connect-timeout 3 --max-time 10 -v http://127.0.0.1:18080/health

Запустите проверку во втором локальном терминале, пока SSH работает. Если локальный порт занят, ExitOnForwardFailure завершит установку туннеля с ошибкой. Но этот параметр не гарантирует доступность конечного HTTP-приложения: соединение к нему создаётся позже, когда клиент обращается к локальному порту.

Если локальный TCP принимается, а в SSH появляется сообщение об отказе подключения к назначению, исследуйте удалённый адрес и слушатель 8080. Если получен HTTP 401, сетевой туннель уже довёл запрос до приложения, а дальше нужна его штатная авторизация. Эти наблюдения позволяют не менять SSH-конфигурацию из-за ошибки самой панели.

Учитывайте имя приложения

Некоторые панели проверяют Host, строят абсолютные ссылки или используют HTTPS-сертификат на доменное имя. Тогда запрос по 127.0.0.1 может вызвать перенаправление на внутреннее имя. Не отключайте проверку сертификата по привычке: сначала сохраните требуемое имя и настройте клиентское разрешение для туннеля либо используйте диагностический curl с подходящим URL и явным направлением соединения.

Локальная привязка к 127.0.0.1 ограничивает слушатель этой машиной. Замена на 0.0.0.0 может открыть панель соседям по сети ноутбука. Если доступ нужен команде, это уже задача отдельной публикации с правилами доступа, а не случайное расширение личного туннеля.

Для завершения остановите SSH в первом терминале и повторите локальную проверку: слушатель должен исчезнуть. Сохраните команду вместе с пояснением обеих сторон, чтобы следующий инженер не перепутал loopback ноутбука с loopback сервера.

Освойте доступ к сервисам через понятные сетевые границы. В курсе Linux и Bash для DevOps-инженеров предусмотрены настройка окружения, доступов и диагностика портов. Откройте программу и продолжите практику на учебном сервере, где каждое соединение можно связать с конкретным процессом.

Ещё по теме

Продолжить на практике

  • Linux и Bash для DevOps-инженеров ↗

    Linux для работы с серверами: процессы, права, systemd, сеть, диски и логи. Автоматизируйте повседневные задачи на Bash и разберите типичные сбои сервиса — от занятого порта до переполненного диска.