Перейти к содержимому

SSH: Туннели

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

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

Окно терминала
ssh -L 8080:127.0.0.1:8000 example.com

Теперь в браузере на локальном компьютере перейдите по адресу http://localhost:8080, и вы получите данные (или увидите веб-страницу) с вашего удалённого сервера.

  • 8080 — номер порта на локальном компьютере с SSH-клиентом
  • 127.0.0.1:8000 — IP-адрес и номер порта на удалённом компьютере
  • -fNT — дополнительные опции для запуска SSH-клиента в фоновом режиме

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

Окно терминала
ssh -R 9090:localhost:3000 example.com

Теперь все запросы на удалённом сервере к порту 9090 будут перенаправляться на порт 3000 вашего локального компьютера.

ProxyJump — ещё один полезный механизм. Он позволяет подключаться к удалённому серверу через промежуточный SSH-сервер, также называемый “jump host”.

Чтобы подключиться к server2 через server1:

Окно терминала
ssh -J user@server1 server2

Также можно настроить это постоянно для определённого хоста в SSH-конфиге ~/.ssh/config:

Host server2
ProxyJump user@server1

Теперь вы можете просто использовать:

Окно терминала
ssh server2

Безопасный удалённый доступ к базе данных

Заголовок раздела «Безопасный удалённый доступ к базе данных»

Сценарий: У вас есть база данных MySQL на удалённом сервере, и вы хотите получить к ней доступ со своего компьютера. Создайте SSH-туннель для проброса удалённого порта MySQL на ваш локальный компьютер:

Окно терминала
ssh -L 3306:localhost:3306 example.com

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

Окно терминала
mysql -h 127.0.0.1 -P 3306 -u db_user -p

Сценарий: Вам нужно получить доступ к удалённой базе данных на порту 5432 и веб-приложению на порту 8080 на удалённом сервере.

Окно терминала
ssh -L 8080:localhost:8080 -L 5432:localhost:5432 example.com

После выполнения этой команды вы сможете открыть удалённое веб-приложение по адресу http://localhost:8080 и подключиться к удалённой базе данных на localhost:5432.

Для частых настроек SSH-туннелей вы можете упростить процесс с помощью файла конфигурации SSH ~/.ssh/config.

Host example.com
LocalForward 5432 localhost:5432
LocalForward 8080 localhost:8080

Такая настройка позволяет быстро устанавливать SSH-туннели с заранее заданными параметрами, используя только алиасы.

Сценарий: У вас есть IP-камера в частной сети, которая транслирует видео по RTSP на rtsp://192.168.1.10:554/stream1. Вам нужно получить доступ к этому RTSP-потоку со своего компьютера.

Окно терминала
ssh -L 8554:192.168.1.10:554 example.com

После выполнения этой команды вы сможете получить доступ к RTSP-потоку со своего компьютера с помощью RTSP-клиента (например, VLC media player), подключившись к rtsp://localhost:8554/stream1.

  1. Откройте VLC Media Player
  2. Перейдите в “Медиа” и выберите “Открыть сетевой поток”.
  3. Введите URL rtsp://localhost:8554/stream1.
  4. Нажмите “Воспроизвести”.

Теперь VLC подключится к RTSP-потоку через SSH-туннель, и вы сможете просматривать изображение с камеры так, как будто находитесь в одной сети с ней.