SSH-туннели подходят для безопасного доступа к внутренним сервисам без публикации портов наружу. Подход удобен администраторам, инженерам и разработчикам, работающим с закрытыми HTTP-панелями, базами данных и приватными API. Проброс портов выполняется через защищённое SSH-соединение, а сервисы остаются недоступны извне.
SSH-туннель также называют SSH port forwarding — это передача порта через защищённый SSH-канал.
- Зачем нужны SSH-туннели
- Как работает SSH-туннель
- Что нужно для настройки
- SSH-туннель на Linux и macOS
- Базовый синтаксис
- Проброс базы данных PostgreSQL
- SSH-туннель на Windows через PuTTY
- Настройка подключения
- Добавление туннеля
- SSH-туннель на Windows через MobaXterm
- Создание сессии
- Добавление туннеля
- Типовые сценарии
- Безопасность SSH-туннелей
- FAQ
- Можно создать несколько туннелей одновременно?
- Можно использовать SSH-ключи?
- Можно указать другой локальный порт?
- Что проверить при ошибках?
- Заключение
Зачем нужны SSH-туннели
- доступ к админ-панелям и приватным UI;
- подключение к PostgreSQL, MySQL, Redis, доступным только по
127.0.0.1; - работа с внутренними API;
- отладка сервисов без изменения настроек сети и firewall.
Сервисы остаются закрытыми для внешнего мира, доступ есть только у пользователей с SSH-доступом.
Как работает SSH-туннель
Туннель привязывает локальный порт к порту на удалённом сервере. Пример:
- сервис на сервере слушает
127.0.0.1:3002; - создаётся туннель
3002 → 127.0.0.1:3002; - переход по адресу
http://localhost:3002открывает удалённый UI.
Что нужно для настройки
- адрес сервера;
- SSH-учётные данные (ключ или пароль);
- порт сервиса на сервере (например
3002,5432,6379).
SSH-туннель не запускает сервис. Он лишь прокидывает доступ к нему.
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.
Если UI не открывается, проверьте, слушает ли сервис нужный порт на 127.0.0.1.
Проброс базы данных 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.
Типовые сценарии
| Задача | Команда | Подключение |
|---|---|---|
| Веб-панель | 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-ключа;
- весь трафик шифруется;
- нет необходимости открывать дополнительные порты.
Использование 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-туннели помогают безопасно работать с закрытыми сервисами, предоставляя защищённый и удобный доступ без открытия портов наружу. Подход упрощает администрирование и повышает безопасность инфраструктуры.

