Android

Как настроить SSH туннелирование (переадресация портов)

Настя и сборник весёлых историй

Настя и сборник весёлых историй

Оглавление:

Anonim

Туннелирование SSH или переадресация SSH-порта - это метод создания зашифрованного SSH-соединения между клиентом и серверным компьютером, через который можно ретранслировать сервисные порты.

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

Существует три типа переадресации портов SSH:

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

, мы поговорим о том, как настроить локальные, удаленные и динамически зашифрованные туннели SSH.

Переадресация локального порта

Переадресация локального порта позволяет переадресовать порт на локальном (ssh-клиент) компьютере на порт на удаленном (ssh-сервер) компьютере, который затем перенаправляется на порт на конечном компьютере.

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

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

В Linux, macOS и других системах Unix для создания переадресации локального порта передайте опцию -L клиенту ssh :

ssh -L LOCAL_PORT:DESTINATION:DESTINATION_PORT SSH_SERVER

Используются следующие параметры:

  • LOCAL_PORT - IP- LOCAL_PORT и номер порта локальной машины. Когда LOCAL_IP опущен, ssh-клиент связывается с localhost. DESTINATION:DESTINATION_PORT - IP-адрес или имя хоста и порт компьютера назначения. SERVER_IP - удаленный пользователь SSH и IP-адрес сервера.

Вы можете использовать любой номер порта больше 1024 в качестве LOCAL_PORT . Номера портов менее 1024 являются привилегированными портами и могут использоваться только пользователем root. Если ваш SSH-сервер прослушивает порт, отличный от 22 (по умолчанию), используйте параметр -p .

Имя хоста назначения должно быть разрешено с сервера SSH.

Допустим, у вас есть сервер базы данных MySQL, работающий на компьютере db001.host во внутренней (частной) сети, через порт 3306, доступный с компьютера pub001.host и вы хотите подключиться с помощью клиента mysql на локальном компьютере к серверу базы данных. Для этого вы можете переслать соединение следующим образом:

ssh -L 3336:db001.host:3306 [email protected]

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

Теперь, если вы db001.host:3306 клиенту базы данных вашего локального компьютера 127.0.0.1:3336 , соединение будет перенаправлено на db001.host:3306 MySQL db001.host:3306 через компьютер pub001.host который будет выполнять роль промежуточного сервера.

Вы можете перенаправить несколько портов нескольким получателям в одной команде ssh. Например, у вас есть другой сервер баз данных MySQL, работающий на компьютере db002.host и вы хотите подключиться к обоим серверам с локального клиента, который вы запустите:

ssh -L 3336:db001.host:3306 3337:db002.host:3306 [email protected]

Для подключения ко второму серверу вы должны использовать 127.0.0.1:3337 .

Если хост назначения совпадает с сервером SSH, вместо указания IP-адреса или имени хоста вы можете использовать localhost .

Скажем, вам нужно подключиться к удаленному компьютеру через VNC, который работает на том же сервере и недоступен извне. Команда, которую вы бы использовали:

ssh -L 5901:127.0.0.1:5901 -N -f [email protected]

Опция -f указывает команде ssh запускаться в фоновом режиме, а -N не выполнять удаленную команду. Мы используем localhost потому что VNC и сервер SSH работают на одном хосте.

Переадресация удаленных портов

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

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

В Linux, macOS и других системах Unix для создания переадресации удаленного порта передайте опцию -R клиенту ssh :

ssh -R REMOTE_PORT:DESTINATION:DESTINATION_PORT SSH_SERVER

Используются следующие параметры:

  • REMOTE_PORT - IP-адрес и номер порта на удаленном сервере SSH. Пустой REMOTE означает, что удаленный SSH-сервер будет связываться со всеми интерфейсами. DESTINATION:DESTINATION_PORT - IP-адрес или имя хоста и порт компьютера назначения. SERVER_IP - удаленный пользователь SSH и IP-адрес сервера.

Локальная переадресация портов в основном используется для предоставления доступа к внутренней службе кому-либо извне.

Допустим, вы разрабатываете веб-приложение на своем локальном компьютере и хотите показать предварительный просмотр вашему коллеге-разработчику. У вас нет общедоступного IP-адреса, поэтому другой разработчик не может получить доступ к приложению через Интернет.

ssh -L 8080:127.0.0.1:3000 -N -f [email protected]

Приведенная выше команда заставит сервер ssh прослушивать порт 8080 и туннелировать весь трафик с этого порта на локальный компьютер через порт 3000 .

Теперь ваш коллега-разработчик может набрать the_ssh_server_ip:8080 в своем браузере и просмотреть ваше удивительное приложение.

Динамическая переадресация портов

Динамическая переадресация портов позволяет вам создать сокет на локальной машине (клиент ssh), который действует как прокси-сервер SOCKS. Когда клиент подключается к этому порту, соединение перенаправляется на удаленный компьютер (ssh-сервер), который затем перенаправляется на динамический порт на конечном компьютере.

Таким образом, все приложения, использующие прокси-сервер SOCKS, будут подключаться к SSH-серверу, а сервер будет перенаправлять весь трафик к его фактическому месту назначения.

В Linux, macOS и других системах Unix для создания динамической переадресации портов (SOCKS) передайте опцию -D клиенту ssh :

ssh -D LOCAL_PORT SSH_SERVER

Используются следующие параметры:

  • LOCAL_PORT - IP- LOCAL_PORT и номер порта локальной машины. Когда LOCAL_IP опущен, ssh-клиент связывается с localhost. SERVER_IP - удаленный пользователь SSH и IP-адрес сервера.

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

Следующая команда создаст туннель SOCKS на порту 9090 :

ssh -D 9090 -N -f [email protected]

Как только туннелирование установлено, вы можете настроить свое приложение для его использования. В этой статье объясняется, как настроить браузер Firefox и Google Chrome для использования прокси-сервера SOCKS.

Переадресация портов должна быть настроена отдельно для каждого приложения, для которого вы хотите туннелировать трафик.

Настройка SSH-туннелирования в Windows

Пользователи Windows могут создавать SSH-туннели, используя PuTTY SSH-клиент. Вы можете скачать PuTTY здесь.

  1. Запустите Putty и введите IP-адрес сервера SSH в поле Host name (or IP address) .

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

    Настройка аутентификации с открытым ключом позволит вам подключиться к вашему серверу без ввода пароля.

Вывод

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

SSH безопасности