Для этого вам понадобиться настроить надежный и безопасный канал связи с вашим сервером.
Тут на помощь нам приходит вариант с туннелем SSH.
SSH-туннелирование (также называемое пересылкой портов SSH) – это просто маршрутизация трафика локальной сети через SSH на удаленные хосты.
Это означает, что все ваши соединения защищены с помощью шифрования.
Он предоставляет простой способ настройки базовой виртуальной частной сети (Virtual Private Network), полезной для подключения к частным сетям через незащищенные общедоступные сети, такие как Интернет.
Вы также можете использовать это решение, чтобы показывать локальные серверы за NAT и брандмауэрами в Интернет через защищенные туннели, как реализовано в ngrok.
Сессии SSH разрешают туннельные сетевые подключения по умолчанию, и существует три типа пересылки портов SSH: локальная, удаленная и динамическая переадресация портов.
В этой статье мы продемонстрируем, как быстро и легко настроить туннелирование SSH или различные типы переадресации портов в Linux.
Тестовая среда
Для задач этой статьи мы используем следующую настройку:
- Локальный узел: 192.168.43.31
- Удаленный хост: Linode CentOS 7 VPS с именем хоста server1.example.com.
Как правило, вы можете безопасно подключиться к удаленному серверу с помощью SSH.
В этом примере я настроил безпарольный SSH-вход между локальными и удаленными хостами, поэтому он не запрашивал пароль пользователя.
Локальный переброс портов SSH
Этот тип переадресации портов позволяет подключаться с локального компьютера к удаленному серверу.
Предполагая, что вы находитесь за ограничительным брандмауэром или заблокированы исходящим брандмауэром для доступа к приложению, запущенному на порту 3000 на удаленном сервере.
Вы можете перенаправить локальный порт (например, 8080), который затем можно использовать для доступа к приложению локально следующим образом.
Флаг -L определяет порт, перенаправленный на удаленный хост и удаленный порт.
$ ssh admin@server1.example.com -L 8080: server1.example.com:3000
Добавление флага -N означает, что вы не выполняете удаленную команду, вы не получите оболочку в этом случае.
$ ssh -N admin@server1.example.com -L 8080: server1.example.com:3000
Параметр -f указывает ssh работать в фоновом режиме.
$ ssh -f -N admin@server1.example.com -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», как показано на скриншоте.
Сохраните изменения и выйдите. Затем вам необходимо перезапустить sshd, чтобы применить последнее изменение, которое вы сделали.
$ sudo systemctl restart sshd или $ sudo service sshd restart
Затем запустите следующую команду для перенаправления порта 5000 на удаленном компьютере на порт 3000 на локальном компьютере.
$ ssh -f -N admin@server1.example.com -R 5000:localhost:3000
Как только вы поймете этот метод туннелирования, вы можете легко и безопасно выявить локальный сервер разработки, особенно за NAT и брандмауэрами в Интернете по защищенным туннелям.
Аналогичным образом работают туннели, такие как Ngrok, pagekite, localtunnel и многие другие.
Динамическое перенаправление портов SSH
Это третий тип переадресации портов.
В отличие от локальной и удаленной переадресации портов, которые позволяют обмениваться данными с одним портом, этот метод делает возможным полный набор TCP-коммуникаций в разных портах.
Динамическая переадресация портов настраивает ваш компьютер как прокси-сервер SOCKS, который по умолчанию прослушивает порт 1080.
Для начала SOCKS – это интернет-протокол, который определяет, как клиент может подключаться к серверу через прокси-сервер (SSH в этом случае).
Вы можете включить динамическую переадресацию портов с помощью опции -D.
$ ssh -f -N -D 1080 admin@server1.example.com
С этого момента вы можете заставить приложения на вашем компьютере использовать этот прокси-сервер SSH, отредактировав их настройки и настроив их на использование, чтобы подключиться к удаленному серверу.
Обратите внимание, что прокси-сервер SOCKS перестанет работать после закрытия сеанса SSH.
В этой статье мы объяснили различные типы переадресации портов с одной машины на другую, для туннелирования трафика через безопасное соединение SSH. Это одно из многих применений SSH. Вы можете добавить свой голос в это руководство через форму обратной связи ниже.
Внимание: перенаправление портов SSH имеет некоторые существенные недостатки: его можно использовать для использования в обходном сетевом мониторинге и программах фильтрации трафика (или брандмауэрах). Атакующие могут использовать его для своий действий. В следующей статье мы покажем, как отключить локальную пересылку портов SSH.