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
Настройка подключения
- Откройте PuTTY.
- Укажите адрес сервера в поле Host Name.
- Задайте порт SSH при необходимости.
Добавление туннеля
- Перейдите в Connection → SSH → Tunnels.
- Source port:
3002. - Destination:
127.0.0.1:3002. - Нажмите Add.
- В Session нажмите Open.
Доступ: http://localhost:3002
SSH-туннель на Windows через MobaXterm
Создание сессии
- Откройте Session → SSH.
- Введите Remote host.
- Укажите Username.
Добавление туннеля
- Откройте SSH tunnels.
- Type: Local.
- Local port:
3002. - Remote server:
127.0.0.1. - Remote port:
3002.
Интерфейс будет доступен по адресу http://localhost:3002.
Типовые сценарии
Задача | Команда | Подключение |
|---|---|---|
Веб-панель |
|
|
PostgreSQL |
|
|
Redis |
|
|
HTTP-API |
|
|
Безопасность 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-туннели помогают безопасно работать с закрытыми сервисами, предоставляя защищённый и удобный доступ без открытия портов наружу. Подход упрощает администрирование и повышает безопасность инфраструктуры.