Установка Linux VNC Server: зачем нужна и как настроить на Ubuntu
Если для удаленной работы на компьютере недостаточно командной строки, можно использовать VNC. Технология предоставляет полноценный графический интерфейс — пользователь видит на своем устройстве рабочий стол с окнами и меню. Рассказываем, как настроить VNC Server.

- Что такое VNC и когда он нужен для удаленного доступа к Linux
- Подготовка сервера Ubuntu: минимальные требования и обновление
- Установка и базовая настройка VNC-сервера (на примере TigerVNC)
- Запуск VNC-сервера и создание системного сервиса
- Настройка безопасного подключения: SSH-туннель и брандмауэр
- Подключение к VNC-серверу с клиентских машин
- Расширенная настройка, оптимизация и решение проблем
- Альтернативы и сравнение с другими решениями
- Заключение
Что такое VNC и когда он нужен для удаленного доступа к Linux
VNC (Virtual Network Computing) — технология, позволяющая подключаться к удаленному компьютеру и управлять его интерфейсом через сеть. При этом пользователь видит рабочий стол удаленной системы и может взаимодействовать с ним так, как будто находится за этим компьютером физически.
Сервер VNC захватывает изображение экрана удаленной машины, кодирует и передает на устройство клиента. Клиент отправляет обратно события ввода — движения мыши и нажатия клавиш.
Многие не понимают, в чем разница VNC с RDP (Remote Desktop Protocol). Она заключается в способе передачи графики. VNC передает «сырое» изображение экрана, то есть то, что там отображается в реальном времени. На качество картинки напрямую влияют сжатие и пропускная способность сети.
Ключевое отличие — в оптимизации для сети. RDP разработан для минимизации передаваемых данных: он «понимает» содержимое экрана (окна, элементы), кэширует его и пересылает только изменения. VNC же чаще обрабатывает экран как картинку. Благодаря этому RDP обычно обеспечивает более высокую производительность и отзывчивость на каналах с низкой пропускной способностью или высокой задержкой.
Для развертывания виртуальных рабочих столов с нужными конфигурациями Cloud.ru предлагает готовое решение — удаленные рабочие места (VDI). С их помощью можно быстро развернуть защищенные удаленные рабочие столы с предустановленным ПО, избавляя от необходимости ручной настройки инфраструктуры.

Схема работы технологииТипичные сценарии использования VNC на сервере Ubuntu
VNC на Ubuntu обычно применяется, если нужен доступ не только к командной строке, но и к графической среде. Примеры задач:
Удаленное администрирование графических приложений на сервере. VNC полезна, когда нужно работать со специализированными программами, конфигураторами и настройками.
Запуск и отладка GUI-программ в облаке. Технология позволяет работать с графическими приложениями, запущенными на облачном сервере, где выполняются все вычисления.
Совместная работа и демонстрация. Несколько пользователей могут подключаться к одному графическому сеансу и видеть один и тот же рабочий экран.
Удаленная поддержка. IT-специалисты могут управлять клиентскими устройствами для решения проблем.
Резюмируем — технология VNC полезна там, где нужно не только выполнение команд, но и визуальное взаимодействие.
Подготовка сервера Ubuntu: минимальные требования и обновление
VNC несложно настроить и использовать, если убедиться в соответствии с системными требованиями и подготовить окружение.
Системные требования и первоначальная настройка
В данном руководстве рассматривается настройка на Ubuntu Server 20.04 LTS или новее. Для удобства первоначальной настройки потребуется доступ по SSH. Технология VNC также поддерживается другими дистрибутивами Linux (Debian, CentOS/RHEL и т.д.) и более старыми, но еще поддерживаемыми версиями Ubuntu.
Чтобы избежать уязвимостей безопасности и конфликта компонентов, перед установкой VNC обновите сервер с помощью команды:
Установка графической среды (Desktop Environment)
VNC работает поверх графической оболочки, поэтому установите на сервер Desktop Environment. Выбирайте легкие среды с минимальным потреблением ресурсов.
Оптимальный вариант для сервера — Xfce. Это быстрая стабильная среда, которая не нагружает систему. Установите ее с помощью команды:
Более тяжелая и функциональная среда — GNOME. Она подойдет, если нужен привычный интерфейс Ubuntu Desktop. Только учтите, что эта среда требует больше оперативной памяти и CPU. Установка выполняется командой:
После развертывания графической среды установите утилиты, которые применяются в GUI-среде. Команды для установки браузера и текстового редактора:
Установка и базовая настройка VNC-сервера (на примере TigerVNC)
Перед настройкой удаленного доступа установите и подготовьте VNC-сервер. Рассмотрим процесс на примере одного из самых популярных серверов — TigerVNC.
Установка пакетов TigerVNC Server
Установите VNC-сервер и сопутствующие компоненты. Если у вас Debian и Ubuntu, действуйте через менеджер пакетов. Команда:
Пакет tigervnc-standalone-server содержит сам сервер, а tigervnc-viewer — это клиент для локальных проверок. После установки всех компонентов система будет готова к первоначальной настройке VNC.
Первоначальная настройка и указание пароля VNC
Для защиты доступа к сессии нужно задать пароль VNC. Это делается не через sudo, а от имени обычного пользователя. Выполните команду:
Система запросит пароль для подключения по VNC. Без этого работать будет невозможно. Пароль нужен только для VNC-доступа. Он не связан с учетными записями пользователя и администратора. Пароль в зашифрованном виде будет храниться в файле ~/.vnc/passwd.
Создание конфигурационного файла и скрипта запуска
Чтобы VNC-сервер знал, какую графическую среду выбирать, создайте файл конфигурации xstartup с помощью команды:
Запишите туда команду для запуска графической сессии. Например, для XFCE скрипт будет такой:
Сохраните файл и назначьте права на выполнение:
Команда будет выполняться при запуске VNC-сессии и обеспечит работу с выбранной графической оболочкой.
Запуск VNC-сервера и создание системного сервиса
Сначала в целях тестирования сервер нужно запустить вручную, затем настроить автозапуск. Рассказываем, как сделать это без ошибок.
Ручной запуск VNC-сервера для тестирования
Запустите графическую сессию и убедитесь, что все корректно работает. Выполните команду:
vncserver -localhost no :1 -geometry 1920x1080
Расшифровываем:
:1 — номер дисплея VNC, который соответствует порту 5901;
-geometry 1920x1080 — разрешение экрана виртуального рабочего стола. Это значение при необходимости можно поменять.
-localhost no — снятие ограничений на подключения с локального хоста. Этот параметр выставляется, если доступ к VNC нужен и с других машин.
Команда запустит VNC-сессию. Если рабочий стол будет отображаться нормально, можно переходить к настройке автозапуска.
Создание systemd-сервиса для автозапуска и управления
Для корректной работы в современных системах с systemd-logind рекомендуется создать скрипт-обертку, а не запускать vncserver напрямую через сервис. Этот подход избегает конфликтов с менеджером сессий.
Создайте скрипт-обертку для запуска. Откройте редактор для создания нового файла:
Добавьте в него следующее содержимое, заменив ВАШ_ПОЛЬЗОВАТЕЛЬ на имя вашего пользователя (того, под которым вы запускали vncpasswd):
Сохраните файл (Ctrl+O, Enter) и выйдите из редактора (Ctrl+X).
Назначьте скрипту права на выполнение.
Создайте и настройте unit-файл для systemd. Теперь создайте сам файл сервиса:
Добавьте в него следующую конфигурацию, снова заменив ВАШ_ПОЛЬЗОВАТЕЛЬ:
Сохраните файл и выйдите из редактора.
Активируйте и запустите сервис. Перезагрузите конфигурацию systemd, чтобы он узнал о новом сервисе:
Включите сервис для автозапуска при загрузке системы и запустите его немедленно:
Настройка безопасного подключения: SSH-туннель и брандмауэр
Чтобы посторонние не перехватили сессию, позаботьтесь о безопасности: ограничьте доступ к порту, создайте SSH-туннель и настройте брандмауэр.
Опасность прямого доступа к порту VNC
Базовый протокол VNC (RFB) в своих ранних версиях не предусматривал шифрования трафика, что делало его уязвимым. Хотя современные реализации (включая TigerVNC) поддерживают механизмы шифрования (TLS), настоятельно не рекомендуется открывать VNC-порт (5901/TCP) напрямую в интернет без тщательной настройки этих механизмов и контроля доступа. Стандартной и надежной практикой является использование SSH-туннеля, как описано ниже.
Создание безопасного SSH-туннеля для подключения
Организуйте соединение через SSH-туннель, чтобы трафик VNC передавался только в рамках зашифрованного SSH-соединения. Его можно настроить командой, выполненной с локального устройства:
Расшифровываем:
-L 5901:localhost:5901 — проброс локального порта 5901 на одноименный порт сервера;
user@server_ip — имя пользователя и адрес сервера;
-N — запрет на выполнение удаленных команд в SSH-сессиях;
-f — соединение в фоновом режиме.
После выполнения команды VNC-клиент не сможет подключаться к серверу не напрямую. Подключение будет выполняться через localhost:5901 на локальной машине, а данные — проходить по зашифрованному SSH-каналу.
Настройка UFW (брандмауэра) на сервере
Чтобы защитить сервер, ограничьте входящие сетевые подключения с помощью брандмауэра. В настройках разрешите только SSH-доступ:
Не добавляйте разрешительное правило для порта 5901 (например, sudo ufw allow 5901), если не настроили шифрование TLS непосредственно в VNC-сервере и не ограничили доступ строго доверенными IP-адресами. Открытие этого порта для всех (0.0.0.0/0) без дополнительной защиты сделает ваш сервер уязвимым для атак. Рекомендуемый и безопасный путь — использование только SSH-туннеля.
Подключение к VNC-серверу с клиентских машин
Разберем алгоритмы подключения и настройки для разных операционных систем:
Сценарий | Действия |
Linux | Установите VNC-клиент командой sudo apt install xtightvncviewer. Чтобы соединение шло через зашифрованный SSH-канал, подключайтесь с помощью команды vncviewer localhost:5901 |
macOS | Установите клиент TigerVNC через Homebrew: brew install tigervnc-viewer. Для подключения через SSH-туннель применяйте команду vncviewer localhost:5901 |
Windows | Используйте любой VNC-клиент: TightVNC Viewer, TigerVNC Viewer или RealVNC Viewer. Укажите адрес: localhost:5901. Чтобы работать через SSH-туннель, настройте проброс порта или примените команду ssh -L 5901:localhost:5901 user@server_ip |
Использование noVNC через браузер | Установите novnc и websockify на сервере. После запуска веб-интерфейса зайдите на http://server_ip:6080/vnc.html и подключитесь к сессии |
Расширенная настройка, оптимизация и решение проблем
Если вы уже работаете с VNC, постепенно осваивайте детальные настройки. Также стоит знать, как действовать в случае проблем и ошибок. Разберем распространенные ситуации, с которыми сталкиваются многие.
Настройка нескольких сессий для разных пользователей
Чтобы на одном сервере работало несколько пользователей, создайте для каждого отдельные VNC-сессии. Например, для второго пользователя запустите сервис vncserver@2 на порту 5902. Аналогично сделайте и для других, меняя показатели. Это позволит создавать независимые сессии с разными настройками под актуальные задачи.
Оптимизация производительности и качества изображения
Чтобы повысить производительность сервера VNC-сервера, настройте аргументы запуска. Например, уровень сжатия -compresslevel и глубину цвета -depth 16 либо -depth 24.
Можно использовать легковесные оконные менеджеры, такие, как Openbox или Fluxbox вместо полноценной графической среды. Они потребляют меньше ресурсов и обеспечивают быстрый отклик в сессиях через VNC.
Типичные проблемы и их решение
Как действовать в случае ошибок и проблем:
Проблема | Возможная причина | Решение |
Черный экран | Ошибка в ~/.vnc/xstartup или при запуске графической среды | Проверьте содержимое xstartup, укажите правильную команду запуска графической оболочки и задайте права на выполнение — chmod +x ~/.vnc/xstartup |
Ошибка подключения | Не запущен SSH-туннель либо порт блокируется брандмауэром | Выполните команду ssh -L 5901:localhost:5901 user@server_ip, чтобы проверить, открыт ли туннель. Убедитесь, что на сервере разрешен доступ по SSH |
Низкая скорость соединения | Высокое разрешение и отсутствие сжатия | Примените аргумент -C для сжатия SSH, уменьшите разрешение сессии или используйте легковесные оконные менеджеры |
Сброс пароля VNC | Пароль забыт или скомпрометирован | Удалите файл ~/.vnc/passwd и снова задайте пароль командой vncpasswd |
Альтернативы и сравнение с другими решениями
VNC — не единственный способ получить графический доступ к серверу Ubuntu. Рассмотрим альтернативные варианты.
Сравнение VNC-серверов: TigerVNC vs TightVNC vs x11vnc
Есть разные VNC-серверы, которые отличаются скоростью, стабильностью, способами подключения. Освещаем три варианта:
TigerVNC — производительный VNC-сервер, который работает с легковесными графическими средами и поддерживает эффективное сжатие. Именно его часто выбирают для сервера Ubuntu.
TightVNC известен благодаря своему эффективному алгоритму сжатия, который был разработан для работы на низкоскоростных сетях. TigerVNC — это современный форк, активно развивающийся и часто включаемый в репозитории дистрибутивов по умолчанию. x11vnc уникален тем, что предоставляет доступ к уже существующему дисплею X11, а не создает новый виртуальный.
x11vnc — VNC-сервер для подключения к уже запущенной сессии. Новые сеансы он не создает.
В большинстве случаев рекомендуется использовать TigerVNC. TightVNC подойдет для нестабильных медленных каналов связи. x11vnc используется тогда, когда пользователю нужно видеть уже запущенный виртуальный рабочий стол.
Когда использовать xRDP вместо VNC (подключение из Windows)
xRDP — серверная реализация протокола RDP, которая позволяет подключаться к виртуальным рабочим столам Linux с устройств с разными операционными системами. Использовать стороннее ПО для этого не нужно.
Команда для установки xRDP:
xRDP меньше нагружает сеть, чем VNC и отличается более высокой производительностью. Однако технология несовместима с некоторыми графическими средами и требует сложной настройки.
Сравнение xRDP и VNC Современные облачные альтернативы: браузерный доступ (Apache Guacamole)
Чтобы получать доступ к виртуальным рабочим столам из браузера, можно использовать веб-шлюз Apache Guacamole. Технология удобна тем, что не нужно устанавливать на устройство отдельные клиенты.
Guacamole подходит для облачных инфраструктур, поскольку обеспечивает единый интерфейс для доступа к разным системам. Часто выступает в роли безопасной точки входа для администрирования серверов и виртуальных рабочих столов.
Apache GuacamoleЗаключение
После базовой настройки VNC автоматизируйте типовые операции, такие, как запуск сессии и создание пользователей. Регулярно проверяйте настройки безопасности. Закрывайте VNC-порты, ограничивайте круг доступа, обновляйте систему и VNC-сервер.

