Linux проброс портов для ssh

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

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

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

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

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

В этой статье объясняется, как настроить локальные, удаленные и динамически зашифрованные туннели SSH.

Перенаправление локального порта

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  Dns обратная зона windows server 2012

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

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

Перенаправление удаленного порта

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

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

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

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

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

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

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

Если у вас есть доступ к удаленному серверу SSH, вы можете настроить переадресацию удаленного порта следующим образом:

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

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

Если у вас возникли проблемы с настройкой перенаправления удаленного порта, убедитесь, что для параметра GatewayPorts установлено значение « yes в конфигурации удаленного сервера SSH.

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

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

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

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

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

  • [LOCAL_IP:]LOCAL_PORT — IP-адрес и номер порта локального компьютера. Если LOCAL_IP опущен, клиент ssh привязывается к localhost.
  • [USER@]SERVER_IP — удаленный пользователь SSH и IP-адрес сервера.

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

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

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

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

Настроить SSH-туннелирование в Windows

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

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

В меню « Connection разверните SSH и выберите « Tunnels . Установите переключатель Local для настройки локального, Remote для удаленного и Dynamic для динамической переадресации портов.

  • При настройке локальной переадресации введите локальный порт пересылки в поле « Source Port а в поле « Destination введите хост и IP-адрес назначения, например localhost:5901 .
  • Для перенаправления удаленного порта введите порт перенаправления удаленного SSH-сервера в поле Source Port а в поле Destination введите целевой хост и IP-адрес, например localhost:3000 .
  • При настройке динамической пересылки введите только локальный порт SOCKS в поле Source Port .
Читайте также:  Windows open with settings

Нажмите кнопку « Add , как показано на изображении ниже.

Вернитесь на страницу Session чтобы сохранить настройки, чтобы не вводить их каждый раз. Введите имя сеанса в поле « Saved Session и нажмите кнопку « Save .

Выберите сохраненный сеанс и войдите на удаленный сервер, нажав кнопку « Open .

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

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

Выводы

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

Если вы столкнулись с проблемой или хотите оставить отзыв, оставьте комментарий ниже.

Источник

SSH-туннели — пробрасываем порт

Не всегда есть возможность, да и не всегда надо, строить полноценный туннель с интерфейсной парой адресов. Иногда нам нужно лишь «прокинуть» вполне определённые порты.

Тут важно понимать, что туннель можно организовать как изнутри сети, к ресурсам которой вы хотите получить доступ, на внешний ssh-сервер. Также можно организовать туннель с хоста в Интернете на пограничный ssh-сервер сети, чтобы получить доступ к внутренним ресурсам.

Итак. По-порядку.

Строим туннель из сети в мир.

теперь введя на хосте 99.88.77.66:

мы попадём на хост 10.11.12.13.

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

Введя на хосте 99.88.77.66:

получим дамп web-ресурса на 10.11.12.14.

Строим туннель из мира в сеть.

Аналогично, вводим на своём хосте:

и получаем доступ к web-ресурсу узла 192.168.0.10, который находится за хостом 88.77.66.55.

Поддерживаем туннели в поднятом состоянии
Ни для кого не секрет, что связь иногда обрывается, туннели при этом будут отваливаться по таймауту.
Чтобы не утруждать себя дополнительным монотонным вбиванием команды на поднятие туннеля и мониторингом этого процесса, автоматизируем его. Смело вводим:

и создаём расписание примерно следующего вида:

Сохраняемся. Проверяем по

что расписание принято.

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

По практическому опыту — cron-задания на перезапуск абсолютно недостаточно.
Разве что соединение абсолютно стабильно. В реальной жизни встречается в 0% случаев.
Даже соединённые напрямую кабелем две сетевые карты легко могут потерять n-ное количество пакетов и tcp-соединение «упадёт».
Клиент и сервер будут пребывать в святой уверенности, что всё в порядке, просто вторая сторона ничего не передаёт.
Нужен keepalive.
Примерно так:

Интервал и счётчик — по вкусу.
Добавлять их надо либо в /etc/ssh_config, либо в

/.ssh/config, либо прямо в команде через опцию -o.
В принципе, судя по man ssh_config, первую из опций можно и опустить. но, на всякий случай, пусть будет.

Источник

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

SSH-туннелирование (также называемое перенаправление портов SSH) — это просто маршрутизация трафика локальной сети через SSH на удаленные хосты. Это означает, что все ваши соединения защищены с помощью шифрования. Это обеспечивает простой способ настройки основного VPN (Virtual Private Network), полезного для подключения к частным сетям по незащищенным сетям общего пользования, таким как Интернет.

Вы также можете использовать показ локальных серверов за NAT и брандмауэров в Интернете через защищенные туннели, как это реализовано в ngrok.

Сессии SSH разрешают туннельные сетевые подключения по умолчанию, и существует три типа пересылки портов SSH: локальная, удаленная и динамическая переадресация портов.

Читайте также:  Tp link tl wn721n драйвер для windows 10 64 bit

Если вы интересуетесь защитой компьютерной сети на предприятии, можно заказать Касперский стандартный у золотого партнера Лаборатории Касперского: его предложение отличается более привлекательной ценой и доставкой во все регионы РФ.

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

Испытательная среда:

Для целей этой статьи мы используем следующую настройку:

  • Локальный хост : 192.168.43.31
  • Удаленный хост : Linode CentOS 7 VPS с именем хоста server1.example.com.

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

Локальное перенаправление портов SSH

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

Вы можете перенаправить локальный порт (например, 8080), который затем можно использовать для доступа к приложению локально следующим образом. Флаг -L определяет порт, пересылаемый на удаленный хост и удаленный порт.

Добавление флага -N означает не выполнять удаленную команду, вы не получите шелл в этом случае.

Переключатель -f дает команду SSH, чтобы работать в фоновом режиме.

Теперь откройте браузер на вашей локальной машине, и вместо того чтобы обращаться к удаленному приложению, используя адрес server1.example.com:3000 , вы можете просто использовать localhost:8080 или 192.168.43.31:8080 , как показано на скриншоте ниже.

Доступ к удаленному приложению через локальную пересылку портов SSH

Удаленное перенаправление портов SSH

Удаленная переадресация портов позволяет вам подключиться с удаленного компьютера к локальному компьютеру. По умолчанию SSH не разрешает удаленное перенаправление портов. Вы можете включить это с помощью директивы GatewayPorts в главном файле конфигурации SSHD: /etc/ssh/sshd_config на удаленном хосте.

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

Найдите требуемую директиву, раскомментируйте ее и установите ее значение yes , как показано на скриншоте.

Включение удаленного перенаправления портов SSH

Сохраните изменения и выйдите. Затем вам необходимо перезапустить sshd, чтобы применить последнее изменение, которое вы сделали.

Затем запустите следующую команду для перенаправления порта 5000 на удаленном компьютере на порт 3000 на локальном компьютере.

Как только вы поймете этот метод туннелирования, вы можете легко и безопасно выявить локальный сервер разработки, особенно за NAT и брандмауэрами в Интернете по защищенным туннелям. Аналогичным образом работают туннели, такие как Ngrok, pagekite, localtunnel и многие другие.

Динамическое перенаправление портов SSH

Это третий тип переадресации портов. В отличие от локальной и удаленной переадресации портов, которые позволяют обмениваться данными с одним портом, это делает возможным полный набор TCP-коммуникаций в разных портах. Динамическая переадресация портов настраивает ваш компьютер как прокси-сервер SOCKS, который по умолчанию прослушивает порт 1080.

Для начинающих, SOCKS — это интернет-протокол, который определяет, как клиент может подключаться к серверу через прокси-сервер (SSH в этом случае). Вы можете включить динамическую переадресацию портов с помощью опции -D .

Следующая команда запустит прокси SOCKS на порту 1080, что позволит вам подключиться к удаленному хосту.

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

Резюме

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

Внимание : перенаправление портов SSH имеет некоторые существенные недостатки: его можно использовать для использования в обходном сетевом мониторинге и программах фильтрации трафика (или брандмауэрах). Атакующие могут использовать его для злонамеренных действий.

Источник

Оцените статью