Thank you for reading this post, don't forget to subscribe!
SSH известен как очень безопасный протокол, поскольку он обеспечивает сквозное шифрование трафика.
Но зашифрованные туннели, которые он создает, на самом деле довольно универсальны и могут использоваться не только для удаленного управления сервером или передачи файлов.
Проброс портов SSH может использоваться для шифрования трафика между двумя системами практически для любого протокола.
Это достигается путем создания безопасного туннеля и последующей маршрутизации трафика другого протокола через этот туннель.
По принципу работы он очень похож на VPN.
В качестве примера мы создадим переадресацию портов для протокола telnet, который обычно избегают из-за того, как он передает данные в виде открытого текста.
Это обезопасит протокол telnet.
Как использовать проброс портов SSH
Переадресация портов SSH работает путем перенаправления трафика с определенного порта в вашей локальной системе на порт в удаленной системе.
Два порта не обязательно должны быть одинаковыми.
В качестве примера мы перенаправим порт 4500 в нашей локальной системе на порт 23 (telnet) в удаленной системе.
Вам не обязательно делать это от пользователя root.
Поскольку мы используем порт выше 1024, обычный пользователь может создать это соединение с переадресацией порта.
Имейте в виду, что туннель возводится только тогда, когда работает SSH-соединение.
ssh -L 4500:127.0.0.1:23 user@test.ru
Давайте разберемся, что происходит в этой команде.
- -L – эта опция сообщает SSH, что мы хотим создать туннель через переадресацию портов.
- 4500 – порт в нашей локальной системе, через который мы будем отправлять трафик.
- 127.0.0.1 – это loopback адрес нашей локальной системы.
- 23 – удаленный порт, к которому мы пытаемся подключиться.
- user – имя пользователя для входа в SSH на удаленном сервере.
- test.ru – IP или доменное имя удаленного сервера.
На этом этапе каждое соединение, использующее порт 4500 на локальном хосте, будет перенаправлено на удаленный порт 23.
Теперь в нашей локальной системе мы можем получить доступ к службе telnet удаленной системы, маршрутизируя трафик через порт 4500.
Мы откроем новый терминал и попробуем это в нашей тестовой системе, оставив другой терминал открытым, чтобы он поддерживал наш SSH-туннель.
Теперь у нас есть сеанс telnet, открытый для удаленного сервера, но это защищенное соединение, поскольку оно отправляется через существующий туннель SSH, который мы установили в другом терминале.
Это все, что нужно сделать.
Вы можете использовать SSH-туннели для любого типа трафика.
Следует помнить, что вы должны указать своему приложению свой адрес localhost (127.0.0.1) и номер порта, который вы настроили для туннеля SSH.
Как создать постоянный туннель SSH
Возможно, вы заметили, что для долгосрочных туннелей SSH довольно неудобно то, что они полагаются на наше открытое SSH-соединение.
Если есть временная задержка или терминал SSH просто достигает своего тайм-аута, туннель отключается вместе с сеансом SSH.
Вы можете установить утилиту autossh вместе с менеджером пакетов вашей системы, если хотите создать туннель, который автоматически восстанавливается при выходе из строя.
Чтобы этот метод работал, вам необходимо настроить ключи RSA для входа по SSH без пароля.
Синтаксис для создания постоянного туннеля в основном идентичен обычному методу SSH.
autossh -L 4500:127.0.0.1:23 user@test.ru