Что такое VNC: как работает удаленный доступ по VNC и когда он не подходит
Быстрый ответ
VNC (Virtual Network Computing) — способ удаленного доступа: программа-сервер передает изображение экрана по протоколу RFB, а клиент, VNC Viewer, отправляет обратно нажатия клавиш и движения мыши. По умолчанию сервер слушает TCP-порт 5900. Классический VNC не шифрует сеанс и учитывает только 8 символов пароля, поэтому через интернет его используют внутри VPN или SSH-туннеля.
VNC встречается в двух ситуациях. Администратор настраивает доступ к серверу или рабочей станции без монитора. Обычный пользователь находит в списке программ «VNC Server» или «VNC Viewer» и хочет понять, что это и откуда взялось.
Разберем оба случая: что делает каждая часть VNC, какой порт открыть, как подключиться в Windows, Linux и macOS, как закрыть главную уязвимость и в каких задачах VNC лучше заменить другим инструментом.
Что такое VNC
VNC (Virtual Network Computing) — технология удаленного доступа к рабочему столу. Компьютер с VNC-сервером передает изображение своего экрана по сети, а VNC-клиент показывает его в окне и отправляет обратно действия пользователя: нажатия клавиш, движения и щелчки мыши. Работать с удаленным компьютером можно так, будто вы сидите перед ним.
Технологию создали в Olivetti & Oracle Research Laboratory в Кембридже в конце 1990-х и открыли исходный код. Протокол, на котором работает VNC, называется RFB (Remote Framebuffer), его спецификация опубликована как RFC 6143.
VNC — не одна программа, а семейство совместимых: TightVNC, UltraVNC, TigerVNC, RealVNC и другие. Обычно клиент одной программы подключается к серверу другой, если у них есть общий способ проверки пароля.
Как работает VNC
У VNC две части:
VNC-сервер запускается на компьютере, к которому подключаются. Он считывает изображение экрана, сжимает его и отправляет клиенту, а полученные от клиента действия передает в систему как обычный ввод с клавиатуры и мыши.
VNC-клиент, его же называют VNC Viewer, запускается на вашем устройстве. Он показывает экран и пересылает серверу ваши действия.
Сервер не отправляет экран целиком на каждое движение мыши. После первого кадра он передает только прямоугольники, которые изменились, и сжимает их одним из методов кодирования: Raw, CopyRect, Tight, ZRLE и другими. Чем меньше меняется на экране, тем меньше трафик.
Протокол работает на уровне пикселей и не зависит от операционной системы. Поэтому с Windows можно подключиться к Linux, а с macOS — к Windows.
В Linux у VNC два режима:
Показ текущего рабочего стола. Вы видите тот же экран, что человек за компьютером. Так работает x11vnc.
Отдельный виртуальный сеанс. Сервер, например Xvnc из TigerVNC, запускает отдельный рабочий стол, которого не видно на мониторе. Удобно для серверов без монитора.
Какой порт использует VNC
По умолчанию VNC-сервер принимает подключения на TCP-порту 5900. Номер дисплея прибавляется к этому числу: дисплей :0 — порт 5900, :1 — 5901, :2 — 5902. Старые серверы дополнительно открывали порт 5800, чтобы подключаться Java-клиентом из браузера.
Смена порта на нестандартный уменьшает количество случайных попыток подбора в журналах, но от целенаправленного сканирования не защищает: сканер проверит и другие порты. Защита — в шифровании и в том, чтобы не открывать порт в интернет. Об этом ниже.
Программы VNC: серверы и клиенты
Программа
Что входит
Системы
Лицензия
Чем отличается
TightVNC
сервер и клиент
Windows; клиент также на Java
бесплатная, GPL
простая установка, передача файлов
UltraVNC
сервер и клиент
Windows
бесплатная, GPL
передача файлов, чат, модули шифрования
TigerVNC
сервер и клиент
Linux, Windows, macOS (клиент)
бесплатная, GPL
шифрование TLS, виртуальные сеансы Xvnc
x11vnc
сервер
Linux с графической средой X11
бесплатная, GPL
показывает текущий рабочий стол
RealVNC Connect
сервер и клиент
Windows, macOS, Linux, Android, iOS
коммерческая
свое шифрование и облачное подключение
В macOS VNC-сервер встроен: функция «Общий экран» (Screen Sharing) принимает подключения от VNC-клиентов. В Linux распространен клиент Remmina, который подключается и по VNC, и по RDP.
Как подключиться по VNC
Windows: TightVNC
Скачайте установщик с официального сайта tightvnc.com. На компьютер, к которому будете подключаться, установите TightVNC Server, на свой — TightVNC Viewer.
При установке сервер попросит два пароля: для подключения и для изменения настроек. Пароль для подключения задайте длиной 8 символов: длиннее протокол не учтет.
Проверьте, что брандмауэр Windows разрешает входящие подключения на порт 5900.
В TightVNC Viewer введите адрес удаленного компьютера, например 192.168.1.100, и пароль.
В адресе VNC-клиента одно двоеточие означает номер дисплея, а два — номер порта: 192.168.1.100:1 и 192.168.1.100::5901 ведут на один и тот же сервер.
Первая команда устанавливает сервер (в Debian, Ubuntu и Astra Linux), вторая сохраняет пароль, третья показывает текущий рабочий стол. Параметр -localhost принимает подключения только с этого же компьютера: снаружи к нему подключаются через SSH-туннель, как показано в разделе о безопасности.
x11vnc работает только в сеансе X11. Если в системе сеанс Wayland, нужен сервер для Wayland, например wayvnc, или встроенные средства удаленного доступа рабочей среды.
Сервер запустит отдельный рабочий стол на дисплее :1, то есть на порту 5901. Человек за монитором этот сеанс не увидит. Так работают с серверами, у которых монитора нет вовсе.
macOS
На компьютере, к которому подключаетесь, включите «Общий экран» в разделе «Общий доступ» системных настроек. Подключиться с другого Mac можно из Finder: меню «Переход» → «Подключение к серверу» → адрес вида vnc://192.168.1.100.
Насколько безопасен VNC
У классического VNC три слабых места.
Пароль ограничен 8 символами. Стандартная проверка «VNC Authentication» использует шифрование DES, и ключом служат первые 8 символов пароля, остальные отбрасываются (RFC 6143, раздел 7.2.2).
Сеанс не шифруется. Протокол защищает только проверку пароля. Изображение экрана и нажатия клавиш, включая набранные пароли от других систем, идут по сети открыто. Шифрование добавляют отдельные реализации: TigerVNC поддерживает TLS, у RealVNC свое шифрование, у UltraVNC есть модули.
Открытый порт находят сканеры. VNC-сервер с портом, открытым в интернет, и коротким паролем подбирают автоматически.
Что делать:
Не открывайте порт VNC в интернет. Подключайтесь через VPN в локальную сеть или через SSH-туннель.
Запускайте сервер так, чтобы он принимал подключения только с самого компьютера (-localhost у x11vnc и TigerVNC), и ходите к нему через туннель.
Где можно, включайте шифрование TLS (VeNCrypt в TigerVNC).
Разрешите в брандмауэре подключения только с нужных адресов.
Обновляйте сервер и выключайте его, когда доступ не нужен.
SSH-туннель из Linux или macOS поднимается одной командой:
ssh -L 5901:localhost:5900 user@192.168.1.100
После этого подключайтесь VNC-клиентом к localhost::5901: трафик пойдет внутри зашифрованного SSH-соединения. В Windows то же самое делает PuTTY: Connection → SSH → Tunnels, Source port 5901, Destination localhost:5900.
VNC или RDP: в чем разница
VNC
RDP
Что передает
изображение экрана
команды отрисовки, изображение, звук, буфер обмена, принтеры
Чей сеанс показывает
тот же экран, что видит человек за компьютером, или отдельный сеанс в Linux
в Windows — отдельный сеанс пользователя; в клиентских редакциях человек за компьютером при этом выходит из системы
Какие системы
любые: Windows, Linux, macOS
сервер — Windows Pro и выше; в Linux — через xrdp
Шифрование
в классическом варианте нет
TLS по умолчанию
Нагрузка на канал
выше на видео и анимации
обычно ниже
VNC удобнее, когда нужно видеть то же, что пользователь, или когда на удаленной стороне Linux и macOS. RDP лучше подходит для работы в Windows по медленному каналу. Подробнее о замене RDP — в обзоре аналогов RDP для Windows.
Когда VNC не подходит
Подключение через интернет без VPN. Нужен белый IP-адрес, проброс порта на роутере и туннель поверх, иначе соединение небезопасно.
Помощь человеку, который не настроит сервер. Родственнику или сотруднику придется установить сервер, задать пароль и сообщить IP-адрес.
Десятки и сотни компьютеров. У VNC нет общего списка устройств, единых прав доступа и журнала: каждый сервер настраивается отдельно.
Требования службы безопасности. Записи сеансов и журнала «кто, когда и к чему подключался» в бесплатных VNC-серверах нет.
Видео и графика по медленному каналу. Передача картинки экрана тяжелее, чем у протоколов, которые передают команды отрисовки.
Эти задачи решают программы удаленного доступа с собственным сервером-посредником. Такую программу, RuDesktop, разрабатываем мы. Она подключается к компьютеру по ID, без белого IP и настройки роутера, через зашифрованный канал TLS на порту 443. Для компаний есть версия с сервером в собственной сети: с журналом действий и записью сеансов. Для личного использования RuDesktop бесплатен до 2 часов подключений в сутки, программа включена в реестр российского ПО (№15913).
Это серверная часть VNC: она показывает экран компьютера тому, кто подключится VNC-клиентом. Ее ставят администраторы для удаленной поддержки, иногда она приходит вместе с другим ПО. Если вы ее не устанавливали и не знаете, кто ей пользуется, уточните у ИТ-службы или удалите: открытый VNC-сервер с простым паролем — легкая цель.
Какой порт использует VNC?
TCP 5900 для первого экрана. Номер дисплея прибавляется к 5900: дисплей :1 работает на порту 5901, :2 — на 5902. Старые серверы дополнительно открывали порт 5800 для Java-клиента в браузере.
Безопасно ли подключаться по VNC через интернет?
Без дополнительной защиты — нет. Классический протокол не шифрует изображение и нажатия клавиш, а пароль ограничен 8 символами. Порт VNC не открывают в интернет: подключаются через VPN, SSH-туннель или используют сервер с шифрованием TLS, например TigerVNC.
Чем VNC отличается от RDP?
VNC передает картинку экрана и работает с любой операционной системой. RDP — протокол Microsoft: он передает команды отрисовки, звук и буфер обмена, шифрует сеанс и обычно экономнее к каналу, но сервером может быть только Windows редакции Pro и выше или Linux с xrdp.
Можно ли подключиться по VNC с телефона?
Да. Для Android и iOS есть VNC-клиенты, например RealVNC Viewer. Подключение идет так же: адрес сервера, порт и пароль. Управлять рабочим столом с маленького экрана неудобно, поэтому так обычно решают короткие задачи.
VNC — это бесплатно?
Большинство реализаций бесплатны и распространяются с открытым кодом: TightVNC, UltraVNC, TigerVNC, x11vnc. RealVNC Connect — коммерческий продукт со своим шифрованием и облачным подключением.
Руководство по настройке удаленного рабочего стола в Astra Linux. Узнайте, как подключиться удаленно, управлять системой и администрировать ее эффективно.