Поиск по сайту:

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


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

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

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

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

Тестовая среда:

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

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

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

ssh [email   

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

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

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

ssh [email  -L 8080:server1.example.com:3000

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

ssh -N [email  -L 8080:server1.example.com:3000

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

ssh -f -N [email  -L 8080:server1.example.com:3000

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

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

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

Откройте файл для редактирования с помощью вашего любимого редактора командной строки.

sudo vim /etc/ssh/sshd_config 

Найдите нужную директиву, раскомментируйте ее и установите для нее значение yes, как показано на снимке экрана.

GatewayPorts yes

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

sudo systemctl restart sshd
OR
sudo service sshd restart 

Затем выполните следующую команду, чтобы перенаправить порт 5000 на удаленном компьютере на порт 3000 на локальном компьютере.

ssh -f -N [email  -R 5000:localhost:3000

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

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

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

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

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

ssh -f -N -D 1080 [email 

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

Читайте также: 5 способов сохранить работу удаленных сеансов SSH после закрытия SSH

Краткое содержание

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

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