Купить Корзина
  • Домены и сайты
  • Облако и IT-инфраструктура
  • Вход

Получить консультацию

Ответим на вопросы, расскажем о конфигурациях, поможем с переносом, подберем оборудование, подготовим коммерческое предложение

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

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

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

Или просто оставьте номер телефона, и мы перезвоним вам

  • Телефон в Москве

    +7 495 580-11-11
  • Бесплатный звонок по России

    8 800 555-34-78
  • Или обратитесь в наши офисы

    Региональные номера
    1. База знаний
    2. Рег.облако
    3. Облачные серверы
    4. Работа с сервером
    5. SSH-туннели: настройка и примеры практического использования

    SSH-туннели: настройка и примеры практического использования

    Что такое SSH-туннель

    SSH — это сетевой протокол, который обеспечивает безопасный удаленный доступ к операционной системе сервера. Он создает защищенный канал связи между двумя устройствами, позволяет пользователям безопасно подключаться к удаленной ОС и передавать данные. Узнать больше о протоколе SSH вы можете в статье: Что такое SSH.

    SSH-туннелирование устанавливает зашифрованное соединение между двумя машинами через незащищенную сеть. Оно позволяет создать защищенный канал между локальным и удаленным узлом, обеспечивая безопасную передачу данных и доступ к ним. SSH-туннелирование также называют пробросом портов. Эта технология подразумевает туннелирование любого порта TCP/IP через SSH. Другими словами, SSH tunnels — это функция, которая позволяет передавать TCP-пакеты с локальной машины на удаленную через SSH-соединение, а также производить трансляцию IP-заголовка во время передачи информации по заранее заданному правилу.

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

    Как создать SSH tunnel

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

    Создание SSH-ключей в Linux и MacOS

    Чтобы создать SSH-ключи:

    • 1

      Откройте терминал:

      • Linux — нажмите сочетание клавиш Ctrl+Alt+T,
      • MacOS — нажмите комбинацию клавиш Command (⌘) + Пробел, введите в поисковой строке Терминал и нажмите Enter.
    • 2

      Введите команду:

      ssh-keygen -t rsa
    • 3

      Далее в терминале появится диалог:

      Enter file in which to save the key (/home/user/.ssh/id_rsa):

      Если вы хотите сохранить ключ в /home/user/.ssh/id_rsa, нажмите Enter. Если вы хотите сохранить ключ в другой директории или в файле с другим названием, введите путь до нужного файла.

    • 4

      Затем система предложит ввести кодовое слово для дополнительной защиты ключа:

      Enter passphrase (empty for no passphrase):

      Введите кодовое слово и нажмите Enter. Если вы не хотите указывать кодовое слово, оставьте поле пустым и нажмите Enter.

    • 5

      Введите кодовое слово повторно:

      Enter same passphrase again:
    • 6

      После успешной генерации пары ключей в терминале появится сообщение:

      Your identification has been saved in /home/user/.ssh/id_rsa
      Your public key has been saved in /home/user/.ssh/id_rsa.pub
      The key fingerprint is:
      SHA256:9dqaaQga+Yi1auGF1p1JFH2lfGi5cA0EU9JQo8bPwSM user@ubuntu
      The key's randomart image is:
      +---[RSA 3072]----+
      |      .o=B*..    |
      |      ...*oB     |
      |     .  E.% o    |
      |      .. O *     |
      |   o + oS + .    |
      |  + * =    o     |
      | o = * . .. .    |
      |  + + . . .+     |
      | ...     .+      |
      +----[SHA256]-----+
    • 7

      Далее необходимо перенести публичный ключ с локального компьютера на сервер. Сделать это можно вручную или автоматически.

      Чтобы перенести ключ вручную, выведите содержимое файла id_rsa.pub с помощью команды:

      cat ~/.ssh/id_rsa.pub

      Затем скопируйте ключ и добавьте его на сервер в файл ~/.ssh/authorized_keys:

      nano ~/.ssh/authorized_keys

      Чтобы перенести ключ автоматически, введите команду:

      ssh-copy-id user@yourserver

      где:

      • user — имя пользователя на сервере,
      • yourserver — IP-адрес вашего сервера.

    На этом создание ключей завершено. Чтобы создать SSH-туннель к удаленному серверу, введите команду:

    ssh root@yourserver

    где yourserver — IP-адрес вашего сервера.

    Создание SSH-ключей в Windows

    Создать SSH-ключи в Windows можно двумя способами: через PowerShell и при помощи PuTTYgen. Ниже мы рассмотрим оба способа.

    • 1
      Откройте консоль PowerShell. Для этого нажмите сочетание клавиш Win+R, введите powershell и нажмите Enter.
    • 2

      Введите команду:

      ssh-keygen -t rsa
    • 3

      Далее в консоли появится диалог:

      Enter file in which to save the key (C:\Users\User/.ssh/id_rsa):

      Если вы хотите сохранить ключ в указанной папке, нажмите Enter. Если вы хотите сохранить ключ в другой папке или в файле с другим названием, введите путь до нужного файла.

    • 4

      Затем система предложит ввести кодовое слово для дополнительной защиты ключа:

      Enter passphrase (empty for no passphrase):

      Введите кодовое слово и нажмите Enter. Если вы не хотите указывать кодовое слово, оставьте поле пустым и нажмите Enter.

    • 5

      Введите кодовое слово повторно:

      Enter same passphrase again:
    • 6

      После успешной генерации пары ключей в терминале появится сообщение:

      Your identification has been saved in C:\Users\User/.ssh/id_rsa
      Your public key has been saved in C:\Users\User/.ssh/id_rsa.pub
      The key fingerprint is:
      SHA256:Jb+jOl5F3vAhrn0hTSyKlTifzhBGGO7qDIC2sVPIII0 User@LAPTOP
      The key's randomart image is:
      +---[RSA 3072]----+
      |    .o.          |
      | o ... . . .     |
      |E . . = + * +    |
      |= .. . * X O .   |
      |o= .. o S * =    |
      |o =.   + + o .   |
      |.+.     = + .    |
      | +.   .. . o     |
      |  o  .oo.        |
      +----[SHA256]-----+
    • 7

      Далее необходимо перенести публичный ключ с локального компьютера на сервер. Для этого выведите содержимое файла id_rsa.pub с помощью команды:

      cat ~/.ssh/id_rsa.pub

      Затем скопируйте ключ и добавьте его на сервер в файл ~/.ssh/authorized_keys:

      nano ~/.ssh/authorized_keys

    На этом создание ключей завершено. Чтобы создать SSH-туннель к удаленному серверу, введите команду:

    ssh root@yourserver

    где yourserver — IP-адрес вашего сервера.

    • 1
      Скачайте и установите PuTTY по инструкции. PuTTYgen установится вместе с PuTTY.
    • 2
      Запустите PuTTYgen.
    • 3

      Выберите тип ключа — RSA. Укажите длину ключа в битах. Затем нажмите кнопку Generate:

      ssh tunneling 1

    • 4

      При необходимости введите кодовое слово для дополнительной защиты ключа. Затем нажмите Save private key и сохраните приватный ключ:

      ssh tunneling 2

    • 5

      Скопируйте публичный ключ и добавьте его на сервер в файл ~/.ssh/authorized_keys:

      ssh tunneling 3

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

    Как использовать SSH proxy

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

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

    ssh -D 8888 user@yourserver

    Эта команда запускает SOCKS-прокси. Для работы используется порт 8888. Служба работает только на localhost. Внеся небольшие изменения в команду, можно включить прослушивание всех интерфейсов, в том числе Ethernet и Wi-Fi. Так приложения смогут подключаться к прокси-серверу через SSH proxy:

    ssh -D 0.0.0.0:8888 user@yourserver

    Для корректной работы браузера необходимо внести настройки. К примеру, для запуска Google Chrome с активированным SOCKS-прокси нужно ввести команду:

    google-chrome --proxy-server="socks5://192.168.1.10:8888"

    Эта команда создаст SOCKS-прокси и инициирует туннелирование DNS-запросов.

    Зачем нужны динамические SSH-туннели

    Динамический SSH-туннель открывает локальный TCP-сокет, чтобы использовать его как SOCKS4/SOCKS5 прокси. Чаще всего его используют в случаях, когда необходим VPN, а развернуть его невозможно. Также использование динамического туннеля подходит для случаев, когда пользователю нужно выйти в интернет однократно.

    Пример создания динамического SSH-туннеля:

    ssh -D 1080 user@yourserver

    В этом примере SOCKS-прокси работает через 1080 порт.

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

    Примеры использования SSH-туннелей

    Проброс портов

    SSH Port Forwarding — наиболее распространенная операция, для которой необходимо создавать SSH-туннель. Для этого на локальном компьютере пользователя открывается порт, а для создания канала связи пользователь выбирает порт на удаленном сервере:

    ssh  -L 9999:127.0.0.1:80 user@yourserver

    В этом примере для прослушки используется порт 9999, а для проброса — 80 порт.

    Обратный SSH-туннель

    SSH-туннель может работать и в обратном направлении. Для создания обратного SSH tunnel нужно подключить прослушивающий порт к другому порту на локальном компьютере пользователя:

    ssh -v -R 0.0.0.0:1999:127.0.0.1:902 192.168.1.100 user@yourserver

    В этом примере соединение идет от порта 1999 к удаленному серверу, а после к 902 порту на локальном компьютере пользователя.

    Удаленное выполнение команд

    Команда ssh позволяет создать интерфейс для выполнения команд на удаленном сервере. Команды указываются в качестве последнего аргумента:

    ssh yourserver “touch newfile.txt”

    Например, эта команда создаст на удаленном сервере файл newfile.txt.

    Rsync через SSH

    Rsync — это утилита, которая используется для удаленной синхронизации и копирования файлов. Ее удобно использовать для регулярного создания бэкапов. Пример:

    rsync -az /home/user/data yourserver:backup/

    С помощью этой команды данные из директории /home/user/data на удаленном сервере будут скопированы в папку backup на локальном компьютере пользователя.

    Запуск GUI-приложений

    С помощью SSH-туннеля вы можете запустить GUI-приложение на удаленной машине.

    Пример запуска VMware на удаленном сервере:

    ssh -X yourserver vmware

    Интерфейс приложения будет доступен на локальном компьютере, а само приложение будет запущено на удаленном сервере. Обратите внимание: для успешного запуска команды необходимо установить пакеты X11, а также прописать «X11Forwarding yes» в файле sshd_config.

    Прыжки по хостам

    Если сеть сегментирована, процесс туннелирования будет включать в себя переход через несколько хостов. Чтобы быстро добраться до конечной сети, используйте параметр —J. Для установления связи с каждым следующим хостом в цепочке будет использоваться переадресация:

    ssh -J host1,host2,host3 user@host4

    Помогла ли вам статья?

    Спасибо за оценку. Рады помочь 😊

     👍
    Специальные предложения
    • Бесплатный хостинг для сайта
    • Дешевый хостинг
    • Бесплатный VPS-сервер
    • Дешёвые VPS
    Рассылка Рег.ру

    Лайфхаки, скидки и новости об IT

    Даю согласие на получение рекламных и информационных материалов

    Домены и сайты
    • Домены
    • Хостинг
    • Создание сайтов
    • SSL-сертификаты
    • VPS и VDS серверы
    • Whois
    • Магазин доменов
    Облако
    и IT-инфраструктура
    • Облачные серверы
    • Частное облако
    • Облачное хранилище
    • Kubernetes в облаке (K8S)
    • Облачные базы данных
    • Выделенные серверы
    Полезное
    • Стоимость услуг
    • Cпособы оплаты
    • База знаний
    • Документы
    • ЭДО
    • Партнерам
    • Сообщить о нарушении
    • РБК: новости России и мира сегодня
    • Новости компаний РФ
    • РБК Инвестиции: курсы валют
    Компания
    • О компании
    • Контакты
    • Офисы
    • Новости
    • Акции и скидки
    • Блог
    • Отзывы клиентов
    8 800 555-34-78 Бесплатный звонок по России
    +7 495 580-11-11 Телефон в Москве
    • vk
    • telegram
    • ok
    • moikrug
    • youtube
    • twitter
    • Облачная платформа Рег.ру включена в реестр российского ПО Запись №23682 от 29.08.2024
    • © ООО «РЕГ.РУ»
    • Политика конфиденциальности
      Политика обработки персональных данных
      Правила применения рекомендательных технологий
      Правила пользования
      и другие правила и политики
    • Нашли опечатку?
      Выделите и нажмите Ctrl+Enter
    • Мы используем cookie и рекомендательные технологии для персонализации сервисов и удобства пользователей. Вы можете запретить сохранение cookie в настройках своего браузера