ctrllife.ru/ctrllife

SSH-туннель: что это такое и как настроить безопасный доступ к скрытым сервисам

SSH-туннель: что это такое и как настроить безопасный доступ к скрытым сервисам
Содержание10 разделов

SSH-туннели подходят для безопасного доступа к внутренним сервисам без публикации портов наружу. Подход удобен администраторам, инженерам и разработчикам, работающим с закрытыми HTTP-панелями, базами данных и приватными API. Проброс портов выполняется через защищённое SSH-соединение, а сервисы остаются недоступны извне.

Зачем нужны SSH-туннели

  • доступ к админ-панелям и приватным UI;
  • подключение к PostgreSQL, MySQL, Redis, доступным только по 127.0.0.1;
  • работа с внутренними API;
  • отладка сервисов без изменения настроек сети и firewall.

Как работает SSH-туннель

Туннель привязывает локальный порт к порту на удалённом сервере. Пример:

  • сервис на сервере слушает 127.0.0.1:3002;
  • создаётся туннель 3002 → 127.0.0.1:3002;
  • переход по адресу http://localhost:3002 открывает удалённый UI.

Что нужно для настройки

  • адрес сервера;
  • SSH-учётные данные (ключ или пароль);
  • порт сервиса на сервере (например 3002, 5432, 6379).

SSH-туннель на Linux и macOS

На системах используют стандартную команду ssh с опцией -L.

Базовый синтаксис

ssh -L <локальный_порт>:127.0.0.1:<удалённый_порт> <пользователь>@<сервер>

Например, проброс веб-панели:

ssh -L 3002:127.0.0.1:3002 user@server.com

После подключения UI будет доступен по адресу http://localhost:3002.

Проброс базы данных PostgreSQL

ssh -L 5432:127.0.0.1:5432 user@server.com

Подключение в клиенте БД:

  • host: localhost
  • port: 5432

SSH-туннель на Windows через PuTTY

Настройка подключения

  1. Откройте PuTTY.
  2. Укажите адрес сервера в поле Host Name.
  3. Задайте порт SSH при необходимости.

Добавление туннеля

  1. Перейдите в Connection → SSH → Tunnels.
  2. Source port: 3002.
  3. Destination: 127.0.0.1:3002.
  4. Нажмите Add.
  5. В Session нажмите Open.

Доступ: http://localhost:3002

SSH-туннель на Windows через MobaXterm

Создание сессии

  1. Откройте Session → SSH.
  2. Введите Remote host.
  3. Укажите Username.

Добавление туннеля

  1. Откройте SSH tunnels.
  2. Type: Local.
  3. Local port: 3002.
  4. Remote server: 127.0.0.1.
  5. Remote port: 3002.

Интерфейс будет доступен по адресу http://localhost:3002.

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

Задача

Команда

Подключение

Веб-панель

ssh -L 3002:127.0.0.1:3002 user@server

http://localhost:3002

PostgreSQL

ssh -L 5432:127.0.0.1:5432 user@server

localhost:5432

Redis

ssh -L 6379:127.0.0.1:6379 user@server

localhost:6379

HTTP-API

ssh -L 8080:127.0.0.1:8080 user@server

http://localhost:8080

Безопасность SSH-туннелей

  • сервисы доступны только по 127.0.0.1;
  • внешний доступ возможен только при наличии SSH-ключа;
  • весь трафик шифруется;
  • нет необходимости открывать дополнительные порты.

FAQ

Можно создать несколько туннелей одновременно?

ssh \
  -L 3002:127.0.0.1:3002 \
  -L 5432:127.0.0.1:5432 \
  user@server.com

Можно использовать SSH-ключи?

ssh -i ~/.ssh/id_rsa -L 3002:127.0.0.1:3002 user@server.com

Можно указать другой локальный порт?

ssh -L 9999:127.0.0.1:3002 user@server.com

Что проверить при ошибках?

  • работает ли обычное SSH-подключение;
  • слушает ли сервис нужный порт;
  • свободен ли локальный порт;
  • не блокирует ли подключение локальный firewall.

Заключение

SSH-туннели помогают безопасно работать с закрытыми сервисами, предоставляя защищённый и удобный доступ без открытия портов наружу. Подход упрощает администрирование и повышает безопасность инфраструктуры.

Оцените запись