Для удаленного доступа сегодня есть множество решений: Windows традиционно использует RDP, в Linux чаще всего работают через SSH. Но помимо этих вариантов есть еще один распространенный способ — технология VNC, которая позволяет управлять удаленным рабочим столом так, будто вы сидите прямо перед сервером.
В этой статье разберем, как установить и настроить VNC-сервер на Ubuntu 24.04, используя реализацию TightVNC, а затем подключимся к нему с клиентской машины.
Что такое VNC и как работает
VNC — это технология, которая позволяет управлять компьютером на расстоянии так, будто вы сидите прямо за его монитором. На вашем экране появляется рабочий стол удаленной машины, и вы можете двигать мышью, печатать, запускать программы — все происходит в режиме реального времени.
Работает VNC следующим образом: на компьютере, к которому нужно подключиться, устанавливается сервер, а на стороне пользователя — клиент. Клиент отправляет команды (например, двигает мышью или нажимает клавиши), а сервер передает картинку рабочего стола в ответ. Все это происходит по сети.
При этом VNC не привязан к определенной операционной системе. Можно подключаться к Windows, Linux и macOS — главное, чтобы на удаленной стороне был запущен сервер.
Зачем нужен удаленный доступ
Удаленный доступ решает простую задачу — позволяет работать с компьютером или сервером, даже если вы находитесь далеко от него. Он помогает открыть документы, запустить программу, посмотреть логи, изменить настройки или просто проверить, что система работает как нужно.
Чаще всего удаленный доступ используют администраторы: им важно быстро реагировать на проблемы, не приезжая в офис или серверную. Но полезен он и обычным пользователям. Например, если нужно помочь родственнику с настройками, забрать забытый файл с домашнего компьютера или подключиться к рабочему столу из поездки.
Еще одна причина востребованности удаленного доступа — гибкость. Он позволяет работать из любого места, где есть интернет, а компании могут поддерживать сотрудников, даже если те находятся в другом городе.

Какие есть реализации VNC
Под VNC обычно подразумевают целое семейство реализаций:
- RealVNC. Исходная реализация, которую разработала компания RealVNC — та самая, что стояла у истоков технологии. Со временем продукт разделился на две ветки: бесплатную и коммерческую. Платные версии предлагают шифрование, передачу файлов, улучшенную производительность и удобные инструменты для командной работы. В бесплатной версии — базовый набор функций без дополнительных возможностей.
- TightVNC. Классическая и легкая версия, которую часто используют для администрирования. Отличается оптимизированным алгоритмом сжатия изображения, благодаря которому хорошо работает даже при низкой скорости интернета. TightVNC часто выбирают для администрирования серверов и постоянных подключений. Однако шифрование в стандартной сборке минимальное, поэтому его используют в основном в локальных сетях или поверх VPN.
- UltraVNC. Эта версия ориентирована прежде всего на Windows. UltraVNC поддерживает передачу файлов, встроенный чат и плагины для шифрования. Ее часто используют для технической поддержки, потому что к функциональности добавлены удобные инструменты для взаимодействия с пользователем.
- TigerVNC. Проект, который вырос из TightVNC, но пошел по пути улучшенной безопасности и стабильности. TigerVNC активно развивается и поддерживает надежное шифрование и хорошую производительность.
- Vino, x11vnc и другие системные серверы. В Linux есть встроенные или полу-встроенные реализации VNC, например Vino (в GNOME) или x11vnc. Они позволяют быстро включить удаленный доступ без установки сторонних программ. Подходят для простых задач, но уступают полнофункциональным решениям по производительности и гибкости.
Подготовка сервера Ubuntu
Перед тем как установить и настроить VNC Server на сервере с Ubuntu, следует подготовить саму машину.
Если вы еще не создали облачный сервер, на котором будете работать, можете воспользоваться соответствующей инструкцией. В ней подробно описано, как выбрать тариф, задать параметры машины и запустить ее.
Затем подключитесь к серверу через SSH:
[crayon-6985edc543da5619020758/]Где username — обычно root или имя пользователя, которое вы указали указали при создании, а server_ip — публичный IP-адрес вашего сервера. Согласитесь на добавление хоста в известные и введите пароль или используйте SSH-ключи (если на этапе запуска сервера вы добавили ключ). После успешного входа вы окажетесь в командной строке сервера.
Как только подключились, первым делом обновите систему, чтобы все пакеты были актуальны и безопасны. Выполните команды:
[crayon-6985edc543db0693646236/]Первая команда обновит список доступных пакетов, вторая — установит актуальные версии. Затем можно перезагрузить сервер (если ядро или системные компоненты обновились):
[crayon-6985edc543db3022066500/]После перезагрузки снова подключитесь по SSH и проверьте, что система работает.
Выбор сервера для VNC:
Для комфортной работы с графическим интерфейсом через VNC выбирайте виртуальный сервер минимум с 2 ядрами CPU и 2 ГБ RAM. Это обеспечит плавную отрисовку рабочего стола без лагов. Все тарифы можно посмотреть и настроить под свои задачи.

Установка и настройка VNC
Шаг 1: Установка графической оболочки и VNC-сервера
Так как большинство облачных серверов Ubuntu создаются без графического интерфейса, для работы по VNC нужно установить графическое окружение и сам VNC-сервер. Мы установим Xfce — легкую оболочку, которая не требует много ресурсов и хорошо работает вместе с TightVNC. Если вам нужна другая среда, можно поставить GNOME, KDE или LXDE.
Сначала обновите список пакетов и установите все необходимое:
[crayon-6985edc543db5839068320/]Доступ по VNC по умолчанию идет через порт 5901. Если на сервере работает firewall, его нужно открыть.
Чтобы открыть порт через UFW, выполните:
[crayon-6985edc543db7354927458/]Чтобы разрешить входящие соединения в iptables, пропишите:
[crayon-6985edc543db9488795587/]Разрешить исходящие можно так:
[crayon-6985edc543dba976433461/]Шаг 2: Первоначальная настройка VNC
Запустите VNC-сервер, чтобы он создал необходимые каталоги и файлы конфигурации:
[crayon-6985edc543dbc944663958/]При первом запуске система попросит задать пароль для подключения по VNC. Он должен быть длиной от 6 до 8 символов. Кроме основного пароля TightVNC предложит создать view-only пароль — он дает доступ только для просмотра. Его можно пропустить, если он не нужен.
По завершении на экране появится сообщение о создании рабочего VNC-сеанса, например:
[crayon-6985edc543dbd367039709/]Число после двоеточия — номер дисплея (:1). VNC автоматически будет использовать порт 5901 (если будет :2, то это будет порт 5902 и так далее).
Шаг 3: Настройка xstartup
Файл xstartup определяет, какую графическую среду VNC будет запускать при каждом подключении. По умолчанию TightVNC создает простой вариант файла, который не подходит для полноценной работы. Поэтому файл нужно настроить вручную, чтобы при запуске загружалась установленная оболочка Xfce.
Прежде чем редактировать конфигурацию, остановите только что созданный сеанс:
[crayon-6985edc543dbf215653451/]Затем откройте файл конфигурации:
[crayon-6985edc543dc0626899171/]Если в нем есть старые строки, их можно удалить или закомментировать. Добавьте минимальную и рабочую конфигурацию:
[crayon-6985edc543dc2729635942/]Эти команды загрузят пользовательские настройки X-сервера и запустят Xfce как основную графическую среду.
Сохранив файл, сделайте его исполняемым, иначе VNC-сервер не сможет использовать скрипт:
[crayon-6985edc543dc7134617288/]С этого момента при каждом старте VNC TightVNC будет корректно запускать Xfce.
Шаг 4: Запуск VNC-сервера
Теперь можно запускать VNC-сервер и подключаться к удаленному рабочему столу. Если это первый запуск после настройки xstartup, сервер создаст рабочую сессию с графической оболочкой Xfce.
Чтобы запустить сервер, выполните команду:
[crayon-6985edc543dc9932139692/]Где :1 — номер дисплея. Он автоматически соответствует порту 5901. Если потребуется второй сеанс, можно указать :2 (это будет порт 5902) и так далее.
После запуска TightVNC покажет путь к файлам журнала и сообщит, что сервер работает. Вы можете открыть VNC-клиент на своем компьютере и подключиться по адресу:
[crayon-6985edc543dca091577422/]Если подключение успешно, вы увидите рабочий стол Xfce, который настроили в предыдущем шаге. В дальнейшем VNC-сервер можно запускать и останавливать вручную. Например, чтобы остановить сервер, пропишите:
[crayon-6985edc543dcc528215175/]Шаг 5: Подключение к серверу из VNC-клиента
Посмотрим, как подключиться к VNC-серверу. Для этого вам понадобится любой VNC-клиент: платный или бесплатный. На Windows популярны UltraVNC и TightVNC Viewer, в Linux часто используют Remmina, а на macOS удобнее всего работать через RealVNC Viewer — он прост в установке и поддерживает стандартные схемы подключения.
В качестве примера подключимся к серверу с компьютера на macOS. Откройте RealVNC Viewer и в главном окне нажмите на поле для ввода адреса. Укажите IP-адрес вашего сервера в стандартном формате:
[crayon-6985edc543dcd441192946/]Например: 203.0.113.10:5901
Нажмите Enter, после чего появится окно с запросом пароля. Введите пароль, который был установлен при первом запуске TightVNC. Через несколько секунд загрузится рабочий стол Xfce, запущенный на сервере Ubuntu.
Подключение под Windows отличается только форматом адреса в некоторых клиентах. Например, если использовать TightVNC Viewer, программа ожидает двойное двоеточие:
[crayon-6985edc543dcf240213063/]Важно! Это особенность конкретного клиента. В остальных приложениях под Windows, как и на macOS, используется классический формат адрес:порт.

Настройка безопасности
По умолчанию VNC нельзя назвать безопасным инструментом. Пароли, которые он использует, хоть и зашифрованы, но шифрование обратимое — существует утилита vncpwd, которая позволяет их расшифровать. Если файл с зашифрованной строкой окажется у злоумышленника, доступ к серверу будет получен без особого труда.
Безопасность — это больше чем SSH-туннель для VNC. Защитите свой проект, настроив резервное копирование конфигураций и данных.
Есть и другая проблема: для работы VNC приходится открывать TCP-порт. Следовательно сервер становится виден в сети, что увеличивает число потенциальных векторов атак. Вдобавок некоторые реализации VNC не поддерживают полноценное шифрование, и пароль может передаваться в открытом виде.
Чтобы избежать подобных рисков, удобнее всего использовать защищенный SSH-туннель. SSH уже установлен на большинстве серверов Linux и по умолчанию обеспечивает надежное шифрование трафика. VNC-сервер слушает только локальный интерфейс, а доступ к нему идет через зашифрованный канал SSH.
Чтобы закрыть VNC от внешних подключений и разрешить доступ только через SSH, запустите сервер с параметром, ограничивающим подключения локальным интерфейсом:
[crayon-6985edc543dd1620908885/]Теперь VNC доступен только через локальный интерфейс. Подключение извне возможно лишь по SSH.
На клиентской машине можно пользоваться режимом -via:
[crayon-6985edc543dd3902874892/]Другой вариант — подключение по порту:
[crayon-6985edc543dd5233616610/]Здесь важно оставить пробел перед двойным двоеточием.
Если хочется полностью контролировать процесс, можно вручную создать SSH-туннель, а затем подключиться к его локальному порту:
[crayon-6985edc543dd6474438974/]SSH откроет защищенный канал, а VNC-клиент подключится уже к локальному адресу. После установления туннеля появится окно с запросом пароля.

Полезные настройки и советы
Работа через VNC становится удобнее, когда сервер и клиент настроены под ваши задачи. Есть несколько небольших улучшений, которые помогают повысить стабильность, скорость отклика и общую безопасность.
1. Настройка разрешения экрана
По умолчанию TightVNC может запускать сеанс в довольно низком разрешении. Чтобы изменить размер рабочего стола, укажите параметр -geometry при запуске сервера:
[crayon-6985edc543dd8439706720/]2. Оптимизация качества и скорости
VNC использует сжатие изображения, и иногда качество картинки может быть хуже ожидаемого. Многие клиенты позволяют вручную выставить уровень качества, отключить лишние визуальные эффекты или включить более агрессивное сжатие. Если соединение медленное, уменьшение качества часто делает работу значительно комфортнее.
3. Отключение тяжелых эффектов в Xfce
Xfce достаточно легкая среда, но ее можно сделать еще быстрее, особенно на недорогих облачных VPS. В настройках диспетчера окон отключите тени, анимации и прозрачность. Это снизит нагрузку на систему и улучшит отклик VNC.
4. Создание разных профилей подключений
VNC-клиенты вроде RealVNC или Remmina позволяют сохранять набор параметров: разрешение, полноэкранный режим, качество изображения, предпочитаемый шифровальный метод. Если вы часто подключаетесь к разным серверам, профили экономят время и помогают избежать ошибок в адресах и портах.
5. Работа через несколько VNC-сеансов
В некоторых случаях удобно запустить несколько сеансов: например, один для полноценного рабочего стола, другой — для отдельной задачи или другого пользователя. Создавайте их с разными номерами дисплеев:
[crayon-6985edc543dda811396597/]Каждый сеанс будет иметь свой порт, что позволяет подключаться независимо.
6. Очистка старых процессов
Иногда VNC-сессия зависает или завершается некорректно. В таких случаях помогает удаление временных файлов:
[crayon-6985edc543ddc456330869/]
Есть ли альтернативы VNC
Да, у VNC есть несколько достойных альтернатив, которые могут подойти в зависимости от задач и требований к безопасности, скорости и удобству подключения:
- RDP (Remote Desktop Protocol). Стандартный протокол удаленного рабочего стола от Microsoft. Отличается хорошей производительностью, поддержкой передачи звука, буфера обмена и даже отдельных устройств. На Linux есть серверы xRDP, позволяющие подключаться к системам Ubuntu и другим дистрибутивам с помощью стандартного клиента Windows.
- NoMachine. Быстрая, удобная и современная система удаленного доступа. Использует собственные протоколы с хорошей компрессией, поэтому часто работает быстрее VNC. Подходит для работы с мультимедиа, высокой частотой кадров и больших экранов.
- TeamViewer. Ориентирован на удаленную поддержку. Удобен для быстрого подключения без сложной настройки сети. Работает через облако, не требует проброса портов, но использует проприетарную модель и зависит от внешнего сервиса.
- RustDesk. Современная альтернатива TeamViewer, позволяющая работать как через облачные релей-серверы, так и через собственный сервер. Безопасность выше, благодаря сквозному шифрованию, а скорость работы — приятный бонус.
- AnyDesk. Еще один популярный инструмент удаленного доступа с хорошей оптимизацией и высоким качеством картинки. Подходит для работы с графикой и мультимедиа, но также опирается на проприетарные решения.
Заключение
VNC — один из самых простых и понятных способов удаленной работы с графическим интерфейсом на сервере или компьютере. Он не привязан к конкретной платформе, работает даже на слабых машинах и легко настраивается. Поэтому его до сих пор активно используют администраторы и пользователи, которым важен удаленный доступ к рабочему столу.
Лучше всего VNC работает в тех ситуациях, когда нужно видеть полноценный графический интерфейс: настроить приложение, управлять сервером без консоли, помочь другому пользователю или просто удобно работать с удаленной системой. Он хорошо справляется с задачами, где важна стабильность, а не максимальная скорость.
Если планируется регулярная работа с большим количеством графики, мультимедиа или требуется максимальная безопасность без SSH-туннелей, лучше обратить внимание на альтернативы — например, RDP, NoMachine или RustDesk. Тем не менее, как инструмент для повседневных задач и удаленного доступа к графической среде Linux, VNC остается надежным и проверенным решением.

FAQ
Как настроить VNC для работы с определенным рабочим столом?
Нужно отредактировать файл ~/.vnc/xstartup и указать команду запуска нужной среды. Затем сделать файл исполняемым и перезапустить VNC.
Примеры команд для разных окружений:
Xfce: startxfce4 &
GNOME: gnome-session &
KDE Plasma: startplasma-x11 &
LXDE: startlxde &
MATE: mate-session &
После изменения файла выполните:
[crayon-6985edc543dde029220869/]Какие дополнительные функции есть у VNC-сервера?
В зависимости от реализации сервер может поддерживать передачу буфера обмена, работу с несколькими сеансами, автоматический запуск через systemd, настройку разрешения экрана, ограничение доступа по IP и просмотр рабочего стола в режиме «только чтение». Некоторые версии также позволяют передавать файлы или настраивать уровень сжатия для повышения скорости работы.
Как оптимизировать производительность VNC-сервера?
Можно увеличить скорость, отключив визуальные эффекты в рабочем столе, уменьшив разрешение экрана, выбрав более легкую оболочку (например, Xfce или LXDE) и настроив более агрессивное сжатие в VNC-клиенте. На медленных каналах помогает запуск VNC с параметром -geometry и использование SSH-туннеля вместо прямого подключения.
Если даже после всех оптимизаций VNC работает медленно, скорее всего, роутер упирается в ограничения CPU или RAM. Самый простой и быстрый способ — увеличить ресурсы вашего облачного сервера через панель управления Рег.облако. Это займет несколько минут и не потребует переустановки системы.
Почему VNC медленнее RDP?
VNC передает на клиент картинку рабочего стола — фактически поток изображений. RDP работает иначе: он передает команды интерфейса и элементы оконной системы. Поэтому он использует меньше трафика и быстрее реагирует на действия пользователя, тогда как VNC сильнее зависит от скорости сети и сжатия изображения.
Можно ли настроить VNC без графической оболочки?
Нет. VNC предназначен для передачи графического рабочего стола, поэтому без установленной оболочки он работать не будет. Если нужен удаленный доступ без GUI, лучше использовать SSH.
Как ограничить доступ к VNC только для определенных IP?
Можно настроить доступ через firewall. В UFW добавьте правило с указанием нужного IP:
[crayon-6985edc543de0722157391/]В iptables аналогично:
[crayon-6985edc543de2749796524/]Так VNC будет доступен только указанным адресам, а все остальные соединения будут отклонены.
Что делать, если VNC не запускается?
Чаще всего проблема связана с висящими процессами или поврежденными PID-файлами. Проверьте логи в каталоге ~/.vnc/, удалите старые PID и LOG-файлы:
[crayon-6985edc543de4448418405/]После этого перезапустите сервер:
[crayon-6985edc543de6574489399/]Если ошибка сохраняется, проверьте, установлен ли рабочий стол и корректно ли настроен xstartup.