Одним из существенных недостатков протокола VNC (Virtual Network Computing, виртуальная сетевая система) для организации удаленного подключения до компьютеров является полное отсутствие шифрования сеанса. Об отсутствии шифрования говорится, в частности, на странице часто задаваемых вопросов о программе TightVNC:
Одним из способов решения данной проблемы является организация SSH-туннеля, поверх которого будет запускаться сессия VNC, что обеспечит полное шифрование запущенной сессии VNC. SSH-туннель создает зашифрованный канал передачи данных между клиентским устройством и сервером. Помимо установки защищенного соединения для доступа до удаленного устройства, при помощи SSH-туннеля также можно передавать данные.
В данной статье мы рассмотрим несколько способов по организации SSH-туннеля, включая использование стандартной утилиты ssh
, а также при помощи сторонних клиентских программ, таких как PuTTY и MobaXterm.
vds
Для начала организуем 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
Где:
-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
:
Обратите внимание на использование двух символов двоеточия после localhost — данная особенность применима только к программе TightVNC Connection.
После ввода адреса нажимаем на кнопку «Connect». Программа запросит пароль от VNC-сессии, который задается на этапе настройки сервера VNC:
После того как пароль будет введен, откроется окно с графическим интерфейсом сервера:
Весь трафик от вашего устройства до сервера VNC теперь полностью защищен и зашифрован.
Помимо использования стандартной утилиты ssh
, организовать туннель можно при помощи популярной клиентской утилиты для подключения к удаленным серверам — PuTTY. Для этого выполняем следующие шаги:
Далее нажимаем на кнопку «Save» чтобы сохранить текущую сессию:
После того как все данные введены, нажимаем на кнопку «Add»:
localhost:5901
: После ввода пароля от VNC-сессии отобразится графический интерфейс сервера:
Еще одной популярной программой на ОС Windows для удаленного подключения к серверам является MobaXterm. С ее помощью тоже можно организовать SSH-туннель. Для этого выполним следующие шаги:
localhost
и порт 5901
.Для сохранения настроек нажимаем на кнопку «Save».
В пункте «Remote hostname or IP address» вводим localhost
, а в пункте «Port» вводим 5901
:
Для подключения нажимаем на кнопку «OK».
После ввода пароля от VNC-сесиии откроется графическая оболочка сервера:
Выгодные тарифы на VDS/VPS в Timeweb Cloud
Несмотря на то, что протокол VNC по умолчанию не шифрует свой трафик, эту проблему можно решить использованием SSH-туннеля. В данной статье мы рассмотрели несколько способов организации SSH-туннеля на вашем устройстве.