Бесплатная миграция IT-инфраструктуры в облако

Настройка SSH-туннеля для организации защищенного подключения по протоколу VNC

Александр Бархатов
Александр Бархатов
Технический писатель
17 июля 2024 г.
932
6 минут чтения
Средний рейтинг статьи: 5

Одним из существенных недостатков протокола VNC (Virtual Network Computing, виртуальная сетевая система) для организации удаленного подключения до компьютеров является полное отсутствие шифрования сеанса. Об отсутствии шифрования говорится, в частности, на странице часто задаваемых вопросов о программе TightVNC:

Image12

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

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

Предварительные требования

  • Сервер или виртуальная машина с установленным VNC. В качестве реализации VNC можно воспользоваться программой TightVNC. Мы описывали ее установку в отдельной статье.
  • Второй сервер или виртуальная машина с предустановленной ОС Linux с графической оболочкой. Использовать можно любой современный дистрибутив Linux. Также в качестве клиентского устройства можно использовать домашний компьютер или ноутбук с ОС Windows, причем можно использовать как домашние (Home) и профессиональные версии, так и редакции Windows Server. 
vds

Создание SSH-туннеля при помощи стандартной утилиты ssh

Для начала организуем SSH-туннель при помощи стандартного OpenSSH-клиента, который предустановлен по умолчанию практически во всех современных дистрибутивах Linux, а также в операционных системах семейства Windows, начиная с Windows 10 версии 1709 и выше, Windows 11, Windows Server 2019 и Windows Server 2022. Также на Windows системах можно использовать любые дистрибутивы WSL (Windows Subsystem for Linux — подсистема Linux для Windows). Команда используемая ниже одинакова будет работать как в Linux-дистрибутивах, так и в Windows:

ssh -L 5901:localhost:5901 root@147.45.146.116

Image13

Где:

  • -L — ключ, отвечающий за проброс локального порта. При локальном пробросе происходит проброс порта из клиентского устройство на сервер. Все последующие установленные соединения на данный локальный порт будут проходить через SSH-туннель.
  • 5901:localhost:5901 — синтаксис для проброса удаленного порта. В данном примере мы сообщаем SSH, что хотим пробросить порт 5901 (порт VNC-сервера), который находится на удаленном сервере, с целью получить доступ до VNC-сервера. В свою очередь мы также открываем порт (в данном случае 5901) на своем устройстве (localhost).
  • root@147.45.146.116 — стандартный синтаксис для подключения по протоколу SSH вида логин@адрес_удаленного_сервера.

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

Если необходимо запустить SSH-туннель в режиме «демона» (в фоновом режиме), то воспользуйтесь опциями -fNT, например:

ssh -fNT -L 5901:localhost:5901 root@147.45.146.116

Где:

  • -f — после ввода пароля пользователя вместо приглашения к вводу оболочки запущенный процесс ssh перейдет в фоновой режим;
  • N — не выполнять никакую команду на удаленном сервере после запуска тоннеля;
  • T — отключает использование терминала.

После того как SSH-туннель был успешно установлен, можно подключаться при помощи любой клиентской утилиты для VNC, например TightVNC Connection. Запускаем утилиту и в поле «Remote Host» вводим адрес localhost::5901:

Image16

Обратите внимание на использование двух символов двоеточия после localhost — данная особенность применима только к программе TightVNC Connection.

После ввода адреса нажимаем на кнопку «Connect». Программа запросит пароль от VNC-сессии, который задается на этапе настройки сервера VNC:

Image17

После того как пароль будет введен, откроется окно с графическим интерфейсом сервера:

Image15

Весь трафик от вашего устройства до сервера VNC теперь полностью защищен и зашифрован.

Создание SSH туннеля при помощи PuTTY

Помимо использования стандартной утилиты ssh, организовать туннель можно при помощи популярной клиентской утилиты для подключения к удаленным серверам — PuTTY. Для этого выполняем следующие шаги:

  1. Запускаем PuTTY и в главном меню заполняем следующие поля:
    • Host Name (or IP address) — прописываем IP-адрес сервера VNC;
    • Port — задаем порт который использует SSH;
    • Saved Sessions — вводим любое имя для создаваемой сессии с целью ее дальнейшего сохранения и быстрого запуска SSH-туннеля.

Далее нажимаем на кнопку «Save» чтобы сохранить текущую сессию:

Image2

  1. Далее в меню слева ищем раздел «Connection», раскрываем его и переходим в «Tunnels»:

Image1

  1. В открывшемся разделе заполняем следующую информацию:
    • Source port — указываем порт, который будет открыт на клиентском устройстве, например 5901;
    • Destination — прописываем IP-адрес сервера VNC, а также порт VNC-сервера.

После того как все данные введены, нажимаем на кнопку «Add»:

Image6

  1. Возвращаемся в главное меню PuTTY (раздел «Session») и подключаемся к серверу, нажав на кнопку «Open». При первом входе на сервер необходимо принять host key, нажав на кнопку «Accept»:

Image5

  1. После ввода пароль от учетной записи откроется терминал сервера:

Image7

  1. Не закрывая окно PuTTY сессии, открываем клиентское приложение, например, TightVNC Connection, и вводим адрес localhost:5901

Image14

После ввода пароля от VNC-сессии отобразится графический интерфейс сервера:

Image3

Создание SSH туннеля при помощи MobaXterm

Еще одной популярной программой на ОС Windows для удаленного подключения к серверам является MobaXterm. С ее помощью тоже можно организовать SSH-туннель. Для этого выполним следующие шаги:

  1. Запускаем программу и сверху ищем пункт «Tunneling»:

Image8

  1. При открытии окна с настройками туннеля убеждаемся, что выбрана опция «Local port forwarding», а также заполняем следующие данные:
    • В разделе «My computer with MobaXterm» вводим локальный порт (5901), который будет открыт на устройстве;
    • В разделе «SSH server» прописываем адрес удаленного сервера VNC, логин и пароль для подключения к серверу;
    • В разделе «Remote server» указываем адрес localhost и порт 5901.

Image4

Для сохранения настроек нажимаем на кнопку «Save».

  1. В открывшемся окне нажимаем на кнопку запуска в разделе «Start/stop»:

Image9

  1. После того как SSH-туннель был запущен, переходим в раздел «Session»:

Image18

В пункте «Remote hostname or IP address» вводим localhost, а в пункте «Port» вводим 5901:

Image10

Для подключения нажимаем на кнопку «OK».

После ввода пароля от VNC-сесиии откроется графическая оболочка сервера:

Image11

Выгодные тарифы на VDS/VPS в Timeweb Cloud

Заключение

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

Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server
17 июля 2024 г.
932
6 минут чтения
Средний рейтинг статьи: 5
Пока нет комментариев