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 вашего локального компьютера.
SSH Proxy Jump
Заголовок раздела «SSH Proxy Jump»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-туннелей вы можете упростить процесс с помощью файла конфигурации SSH ~/.ssh/config.
Host example.com LocalForward 5432 localhost:5432 LocalForward 8080 localhost:8080Такая настройка позволяет быстро устанавливать SSH-туннели с заранее заданными параметрами, используя только алиасы.
Доступ к IP-камере в приватной сети
Заголовок раздела «Доступ к IP-камере в приватной сети»Сценарий: У вас есть 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.
- Откройте VLC Media Player
- Перейдите в “Медиа” и выберите “Открыть сетевой поток”.
- Введите URL
rtsp://localhost:8554/stream1. - Нажмите “Воспроизвести”.
Теперь VLC подключится к RTSP-потоку через SSH-туннель, и вы сможете просматривать изображение с камеры так, как будто находитесь в одной сети с ней.