TGViewer
Linux Ready | DevOps Linux Ready | DevOps @linux_ready · 11.2K subscribers
Post #1550 1.49K
SSH-туннели: доступ к закрытым сервисам без VPN!

SSH позволяет не только подключаться к удалённым серверам и выполнять команды. Через него можно создавать защищённые туннели и получать доступ к сервисам, которые недоступны извне. Например, PostgreSQL работает только внутри сервера и доступен только локально:
127.0.0.1:5432


Порт базы данных не открыт наружу, но есть SSH-доступ к серверу. Создаём локальный туннель, который принимает соединения на вашем компьютере и передаёт их через SSH:
ssh -L 5433:localhost:5432 user@server


Теперь приложение на локальном компьютере подключается к базе через созданный порт:
psql -h 127.0.0.1 -p 5433 database


При этом PostgreSQL остаётся закрытым для внешнего мира. Доступ к нему появляется только через SSH-туннель.

Тот же подход работает с любыми TCP-сервисами. Например, можно получить доступ к внутренней панели администратора, которая слушает только на сервере:
ssh -L 8080:localhost:8080 user@server


После создания туннеля сервис доступен локально:
http://localhost:8080


Обратный туннель используется, когда удалённому серверу нужен доступ к сервису, который работает на вашей локальной машине. Например, приложение для разработки запущено на порту 3000:
ssh -R 9000:localhost:3000 user@server


Теперь процесс на сервере может обращаться к вашему локальному приложению через:
localhost:9000


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

Если требуется открыть reverse tunnel не только для localhost, нужно изменить настройки SSH-сервера:
GatewayPorts clientspecified
AllowTcpForwarding yes


SSH также может работать как SOCKS5-прокси и направлять поддерживающие приложения через удалённую машину:
ssh -N -D 1080 user@server


После этого в приложении можно указать SOCKS5-прокси:
localhost:1080


Такой вариант используется для диагностики маршрутизации и проверки доступа к ресурсам из другой сети.

Если туннель используется постоянно, его можно запустить в фоне без открытия интерактивного сеанса:
ssh -fNT -L 5433:localhost:5432 user@server


Параметры команды:
-f  запуск SSH-процесса в фоне
-N не выполнять команды на удалённой машине
-T отключить создание псевдотерминала


Проверить, что локальный порт слушается:
ss -tlnp | grep 5433


Или посмотреть процесс, который использует порт:
lsof -i :5433


Чтобы не писать длинные команды каждый раз, туннели можно описать в стандартном конфигурационном файле SSH:
Host production-db
HostName server.example.com
User deploy
LocalForward 5433 localhost:5432


После этого подключение выполняется короткой командой:
ssh production-db


SSH-туннели не заменяют полноценный VPN, так как работают с конкретными портами и TCP-соединениями. Но для точечного доступа к закрытым сервисам это один из самых быстрых и надёжных инструментов.

🔥 В DevOps они постоянно используются для работы с приватными базами данных, диагностики продакшн окружений, тестирования интеграций и временного доступа без изменения сетевой инфраструктуры.

🚪 Linux Ready | #практика
  • 👍 20
  • ❤ 11
  • 🔥 8
  • 👎 1
More from @linux_ready
  1. Oct 2, 2026В Linux можно копировать собранные файлы так, чтобы не менять файл назначения, если новая…
  2. Oct 2, 2026🎓 Как гарантированно войти в сферу кибербезопасности с официальным дипломом? Самостоятель…
  3. Oct 2, 2026👩‍💻 SSH: подключение, ключи, туннели и Jump Host! В этом посте собраны основные команды…
  4. Oct 1, 2026Проверяем состояние соединений через conntrack! Linux firewall работает не только с отдель…
  5. Oct 1, 2026👩‍💻 Подключаем удалённый каталог как обычную папку через SSHFS! Если файлы находятся на…
  6. Sep 30, 2026Восстанавливаем удалённый файл через /proc, пока процесс держит его открытым! rm удаляет и…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →