SSH проброс портов: руководство с примерами

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

В этой статье разберёмся, что такое SSH-перенаправление портов, какие бывают его виды и как использовать его на практике.

Что такое проброс портов через SSH

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

Это удобно в трёх основных случаях:

  • нужно получить доступ к внутреннему сервису, который не открыт наружу;

  • требуется защитить небезопасный протокол шифрованием;

  • необходимо организовать промежуточный доступ через удалённый сервер.

Существует три типа SSH-перенаправления:

  • локальное;

  • удалённое;

  • динамическое.

Разберём каждый вариант отдельно.

Локальный проброс портов

Локальный проброс используют чаще всего. Он позволяет подключаться к сервису на удалённой машине так, будто он работает у вас локально.

Как это работает

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

Синтаксис команды:

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

Пример: доступ к удалённой базе данных

Предположим, база данных MySQL работает на сервере и слушает порт 3306, но доступна только изнутри сети. Вы можете создать туннель:

ssh -L 3307:localhost:3306 user@remote_server

Что происходит:

  • на вашей машине открывается порт 3307;

  • всё, что отправляется на localhost:3307, идёт через SSH;

  • сервер перенаправляет трафик на localhost:3306.

Теперь можно подключиться к базе так:

mysql -h 127.0.0.1 -P 3307 -u dbuser -p

С точки зрения клиента база работает локально, но фактически соединение проходит через защищённый туннель.

Пример: доступ к веб-приложению

Если на сервере запущено веб-приложение на порту 8000:

ssh -L 8080:localhost:8000 user@remote_server

После подключения вы сможете открыть в браузере:

http://localhost:8080

И увидеть удалённое приложение.

Удалённый проброс портов

Удалённый проброс работает в обратную сторону. Он позволяет открыть доступ к локальному сервису через удалённый сервер.

Синтаксис:

ssh -R удалённый_порт:локальный_хост:локальный_порт пользователь@ssh_сервер

Пример: публикация локального веб-сервера

Допустим, у вас на компьютере запущен сервер на порту 3000. Нужно временно дать к нему доступ через удалённый VPS.

Команда:

ssh -R 9000:localhost:3000 user@remote_server

Теперь любой, кто подключится к remote_server:9000, попадёт на ваш локальный порт 3000.

Это удобно для демонстрации проектов, тестирования webhook-уведомлений или отладки интеграций.

Важно учитывать настройки SSH-сервера. Параметр GatewayPorts может ограничивать доступ к проброшенным портам.

Динамический проброс портов

Динамический проброс превращает SSH в SOCKS-прокси. Вместо привязки к конкретному сервису вы создаёте универсальный туннель.

Команда:

ssh -D 1080 user@remote_server

После этого на вашей машине появится SOCKS-прокси на порту 1080.

В настройках браузера можно указать:

  • тип прокси: SOCKS5

  • адрес: 127.0.0.1

  • порт: 1080

Весь трафик браузера будет идти через SSH-сервер.

Это полезно:

  • для безопасного доступа к интернету из небезопасной сети;

  • для обхода сетевых ограничений;

  • для тестирования приложений из другой географии.

Дополнительные параметры

Запуск в фоновом режиме

Чтобы не держать терминал открытым:

ssh -f -N -L 8080:localhost:8000 user@remote_server

Опции означают:

  • -N не выполнять удалённые команды;

  • -f отправить процесс в фон.

Проверка занятых портов

Перед созданием туннеля стоит убедиться, что порт свободен:

lsof -i :8080

или

netstat -tulnp | grep 8080

Безопасность и ограничения

Хотя SSH-туннели шифруют трафик, важно помнить:

  • доступ к серверу должен быть защищён ключами, а не паролем;

  • стоит ограничить права пользователей;

  • желательно отключить ненужные типы проброса в конфигурации sshd.

Также нужно понимать, что туннель существует только пока активно SSH-соединение. Если оно разорвётся, доступ пропадёт.

Когда стоит использовать SSH-туннелирование

Проброс портов через SSH особенно полезен:

  • при администрировании серверов;

  • при работе с базами данных;

  • для временного доступа к внутренним сервисам;

  • при разработке и тестировании интеграций.

Это простой и надёжный инструмент, который часто заменяет более сложные решения вроде VPN, если задача локальная и временная.

Комментарии (0)

Войдите, чтобы оставить комментарий

Похожие статьи

Как создать новый проект на Laravel: подробное руководство для начинающих

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

Как обнаруживать и устранять race condition в приложениях Laravel

Race condition - распространённая проблема в веб-приложениях с параллельными запросами. В статье разбирается, как обнаружить такие ошибки в Laravel и какие механизмы помогают их устранить.

Как отключить SELinux на Ubuntu, CentOS, Debian и RHEL

Подробная инструкция по проверке, временной и постоянной деактивации SELinux на популярных Linux-дистрибутивах: Ubuntu, Debian, CentOS и RHEL. Объяснены способы через консоль и конфигурационные файлы.