23.06.2025

SSH туннель: как создать и использовать?

Введение

Цель туннелирования SSH — обеспечить надежную и безопасную передачу данных между двумя узлами или устройствами по ненадежным или открытым сетям, таким как Интернет. Когда трафик должен проходить через внутренние порты и безопасно перенаправляться наружу, туннелирование SSH может быть использовано для создания защищенного канала связи, позволяющего трафику безопасно покидать внутреннюю сеть и направляться во внешнюю.

Основные варианты использования SSH-туннелирования для этих целей включают:

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

Требования к установке

Создадим туннель

Для безопасной передачи перед использованием утилиты нам необходимо обновить и установить все пакеты:

apt update && apt upgrade -y

Скриншот №1 — Обновление

Для создания туннеля по SSH нам необходимо сформировать открытый и закрытый ключ, что поможет более надежно авторизовать пользователя и автоматизировать процесс. Выполним команду ssh-keygen:

ssh-keygen -t rsa

Скриншот №2 — Создание пары ключей

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

Скриншот №3 — Пути ключей

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

После этого необходимо скопировать открытый ключ и сохранить его на целевом сервере с помощью команды, приведенной ниже:

nano /root/.ssh/id_rsa.pub

После ввода команды появится длинная строка с различными символами, в текстовом редакторе nano необходимо нажать Alt + 6, а затем нажать комбинацию кнопок Ctrl + X!

Скриншот №4 — Просмотр публичного ключа

Переключите окна терминала и вставьте файл в нужную директорию, по умолчанию это /home/user/.ssh/id_rsa.pub на целевой машине или, как правило, для этих целей мы можем сразу отправить его на целевой сервер с помощью команды, приведенной ниже:

ssh-copy-id root@94.141.96.47

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

Скриншот №5 — Копирование ключа

Для подтверждения того, что у вас есть разрешение на добавление ключа к данной учетной записи — введите пароль.

Скриншот №6 — Добавление ключа

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

Сменим SSH порт

Изменение стандартного порта SSH с 22 на нестандартный порт — простой, но эффективный способ усиления безопасности и защиты от автоматического сканирования и атак методом перебора. Для этого откройте конфигурационный файл на своей машине:

nano /etc/ssh/sshd_config

Скриншот №7 — Конфигурация порта

В открывшемся окне удалите хэштег перед Port и измените значение на желаемое. После этого нажмите Ctrl+O для сохранения файла и перезапустите службу ssh, выполнив следующую команду:

systemctl restart ssh

Теперь ваш порт для SSH изменен и вы можете использовать его для установки соединения!

Использование туннеля

Кроме управления и передачи данных на другую машину с помощью туннелирования мы можем использовать его для перенаправления трафика и представлять наш туннель как прокси-сервер.

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

ssh  -L 9999:127.0.0.1:80 root@94.141.96.47

Скриншот №8 — Статический проброс порта

Поэтапное объяснение:

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

ssh -D 8888 root@94.141.96.47

Скриншот №9 — Динамический проброс порта

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

В отличие от локальной проброски портов, о которой мы говорили ранее (с помощью опции -L), динамическая проброска портов (с помощью опции -D) создает прокси-сервер SOCKS непосредственно на локальной машине. Когда приложение на локальной машине пытается получить доступ в Интернет, оно может использовать этот SOCKS-прокси-сервер, настроив его на подключение через localhost:8888.

В результате весь сетевой трафик с локальной машины будет перенаправляться через установленное SSH-соединение на удаленный сервер. Удаленный сервер будет обрабатывать исходящий трафик и перенаправлять его в конечный пункт назначения в Интернете.

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

Вывод

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