Гид по технологиям

Установка x11vnc на Ubuntu 20.04 LTS

6 min read Linux Обновлено 22 Dec 2025
Установка x11vnc на Ubuntu 20.04
Установка x11vnc на Ubuntu 20.04

Два компьютера на рабочем столе, дистанционная работа

О чём эта инструкция

В этом материале шага за шагом показано, как настроить VNC‑сервер x11vnc на Ubuntu 20.04 LTS. Даю команды, системный юнит для systemd, рекомендации по безопасности, чеклисты для админа и конечного пользователя, а также сценарии тестирования и матрицу рисков.

Что такое VNC‑сервер

VNC означает Virtual Network Computing. Это протокол и семейство программ, которые позволяют управлять графическим рабочим столом удалённо. В отличие от SSH, VNC показывает графический интерфейс удалённой сессии. x11vnc — лёгкий сервер, который транслирует уже запущенный X11‑дисплей (:0) в реальном времени. Он совместим с большинством VNC‑клиентов и поддерживает аутентификацию UNIX‑аккаунтов, 2048‑битную RSA и VeNCrypt в пакете возможностей.

Короткая дефиниция терминов

  • X11: графическая подсистема для Linux и UNIX‑совместимых ОС.
  • Display manager: программа, которая управляет логином и графическим сеансом (напр., gdm3, lightdm).

Почему стоит выбрать x11vnc

  • Не создаёт дополнительного виртуального дисплея, показывает текущий экран
  • Подходит, если нужно наблюдать или взаимодействовать с уже открытой сессией
  • Совместим с любым VNC‑клиентом

Важно: x11vnc сам по себе не шифрует сессию VNC по умолчанию. Рекомендуется туннелировать трафик через SSH или VPN.

Шаг 1 — Установка совместимого дисплей‑менеджера

Новейший GNOME в Ubuntu использует gdm3 по умолчанию. gdm3 может конфликтовать с x11vnc. Для стабильности установите lightdm.

Откройте терминал: Ctrl + Alt + T

Обновите списки пакетов:

sudo apt update

Установите lightdm:

sudo apt install lightdm

Во время установки появится экран выбора дисплей‑менеджера. Выберите lightdm и нажмите Enter.

Подсказка установки lightdm

Перезагрузите компьютер, чтобы изменения вступили в силу:

sudo reboot

После перезагрузки вы заметите изменения в экране входа — теперь используется lightdm.

Шаг 2 — Установка x11vnc

Откройте терминал и выполните:

sudo apt install x11vnc

Настройка systemd‑сервиса для x11vnc

Создадим юнит, который будет автоматически запускать x11vnc при старте системы. Можно использовать любой редактор, например vim или nano.

sudo vim /lib/systemd/system/x11vnc.service

Вставьте в файл следующее содержимое:

[Unit]
Description=x11vnc service
After=display-manager.service network.target syslog.target

[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -forever -display :0 -auth guess -passwd randompassword
ExecStop=/usr/bin/killall x11vnc
Restart=on-failure

[Install]
WantedBy=multi-user.target

Пояснения к параметрам

  • ExecStart: путь к x11vnc и опции. Параметр -forever держит сервер после разрыва соединения. -display :0 указывает основной X11‑дисплей.
  • -auth guess: пытается автоматически найти файл аутентификации X11. В редких случаях может потребоваться указать путь к файлу .Xauthority.
  • -passwd randompassword: временно укажите сильный пароль здесь. Позже можно использовать файл паролей.

Важно: замените текст randompassword на сложный пароль. Лучше хранить пароль в файле и указывать путь через -rfbauth /path/to/passfile

Сохраните и выйдите из редактора (в vim: Esc, затем :wq и Enter).

Перезагрузите конфигурацию systemd и включите сервис:

sudo systemctl daemon-reload
sudo systemctl enable x11vnc.service
sudo systemctl start x11vnc.service

Проверим статус сервиса:

systemctl status x11vnc.service

Вы должны увидеть состояние active (running).

Статус сервиса x11vnc

На заметку: по умолчанию x11vnc слушает порт 5900 для дисплея :0. Если у вас несколько сеансов, порты будут 5901, 5902 и т.д.

Шаг 3 — Открытие порта в ufw

Если включён ufw, откройте порт 5900 TCP:

sudo ufw allow 5900/tcp

Важно: открытый порт по сети означает потенциальный риск. По возможности используйте доступ только по VPN или через SSH‑туннель.

Шаг 4 — Подключение с другого компьютера

Установите VNC‑клиент на клиентскую машину. Рекомендуемые клиенты: RealVNC Viewer, TigerVNC, Remmina.

После запуска клиента введите IP‑адрес Ubuntu, двоеточие и номер порта или просто ip:5900, затем подключитесь.

Экран первичного подключения VNC

Получить IP на Ubuntu можно так:

ip addr

Клиент предупредит о нешифрованном соединении. Это нормальное поведение для прямого VNC. Нажмите Continue и введите пароль, который вы задали в файле юнита.

Предупреждение о нешифрованном соединении VNC

Поле ввода пароля в VNC Viewer

VNC Viewer на macOS подключается к Linux

Проблема экранной блокировки и её отключение

Если экран блокируется при подключении, это помешает управлению. Откройте Настройки > Конфиденциальность > Блокировка экрана и отключите Automatic Screen Lock и Lock Screen on Suspend.

Важно: отключение блокировки уменьшает безопасность. Включайте её снова, когда удалённый доступ не нужен.

Безопасность и шифрование — лучшие практики

Прямое VNC соединение обычно не шифрует весь трафик. Рекомендую один из следующих подходов:

  1. SSH‑туннель (простой и безопасный)

На клиенте выполните:

ssh -L 5900:localhost:5900 user@remote_ip

Затем в VNC‑клиенте подключайтесь к localhost:5900. Всё трафик пойдёт через зашифрованный SSH‑канал.

  1. VPN

Используйте корпоративный VPN или WireGuard, чтобы скрыть VNC за виртуальной приватной сетью.

  1. stunnel или VeNCrypt

Если необходимо, можно настроить SSL/TLS‑обёртку через stunnel или пользоваться реализацией VeNCrypt, но эти настройки сложнее и зависят от клиента и сервера.

Рекомендация: не открывайте порт 5900 в интернет без дополнительной защиты.

Альтернативные подходы

  • TigerVNC или TightVNC для виртуальных X‑сессий (vncserver) когда нужен отдельный рабочий стол
  • X2Go для более отзывчивой удалённой работы с приложениями — использует SSH и сжатие
  • RDP через xrdp если требуется совместимость с Windows RDP‑клиентами

Руководство для администратора — чеклист

Администратор перед запуском

  • Убедиться, что установлены обновления безопасности
  • Выбрать дисплей‑менеджер (lightdm рекомендуется для x11vnc)
  • Создать systemd‑юнит и проверить путь к Xauthority при необходимости
  • Настроить надёжный пароль или файл аутентификации
  • Открыть порт в ufw только при необходимости
  • Настроить мониторинг сервиса и журналов

Операции поддержки

  • Просмотреть логи: journalctl -u x11vnc.service
  • Перезапустить сервис: sudo systemctl restart x11vnc.service
  • Обновить пароль: остановить сервис, изменить рфбаут или опцию -passwd, перезапустить

Плейбук для оператора (SOP)

  1. Проверка статуса
systemctl status x11vnc.service
  1. Перезапуск при ошибке
sudo systemctl restart x11vnc.service
journalctl -u x11vnc.service --since "10 minutes ago"
  1. Откат пароля
  • Заменить параметр -passwd в юните или создать файл пароля через vncpasswd
  • Обновить конфигурацию: sudo systemctl daemon-reload
  • Перезапустить сервис
  1. Быстрая диагностика сети
sudo ss -ltnp | grep 5900
sudo ufw status verbose

Критерии приёмки

  • Сервис x11vnc active (running)
  • Порт 5900 слушает локально или на требуемом интерфейсе
  • Удалённый клиент успешно подключается и видит графический рабочий стол
  • Пароль аутентификации работает
  • При использовании SSH‑туннеля соединение устанавливается и передача видна

Тестовые кейсы

  1. Локальное подключение по VNC на той же сети — PASS если виден рабочий стол
  2. Подключение через SSH‑туннель — PASS если экран доступен и трафик защищён
  3. Перезапуск display manager — PASS если x11vnc автоматом перезапускается или корректно подхватывается

Матрица рисков и смягчения

  • Риск: Открытый нешифрованный порт 5900 в интернет
    • Смягчение: использовать VPN или SSH туннель; ограничить правила ufw по IP
  • Риск: Слабый пароль
    • Смягчение: задать сильный пароль, использовать файл паролей и rotate policy
  • Риск: Экран блокируется или сеанс закрывается
    • Смягчение: отключить автоматическую блокировку при удалённом доступе и настроить мониторинг

Быстрая шпаргалка команд

  • Установить x11vnc: sudo apt install x11vnc
  • Создать unit: sudo vim /lib/systemd/system/x11vnc.service
  • Включить сервис: sudo systemctl enable –now x11vnc.service
  • Посмотреть логи: journalctl -u x11vnc.service
  • Открыть порт: sudo ufw allow 5900/tcp
  • SSH‑туннель: ssh -L 5900:localhost:5900 user@remote_ip

Дерево принятия решения

flowchart TD
  A[Нужно ли видеть текущий экран ':0'?] -->|Да| B[x11vnc]
  A -->|Нет, нужен новый сеанс| C[VNC server 'vncserver' или TigerVNC]
  B --> D{Требуется шифрование}
  D -->|Да| E[SSH туннель или VPN]
  D -->|Нет| F[Открыть 5900 и предупредить пользователей]
  C --> G[X2Go или RDP если нужна меньшая задержка]

Краткий глоссарий

  • VNC: протокол для удалённого графического доступа
  • x11vnc: сервер, транслирующий существующий X11‑дисплей
  • ufw: простой интерфейс для iptables в Ubuntu
  • systemd: менеджер системных сервисов

Итоги

Установка x11vnc на Ubuntu 20.04 — задача прямолинейная: установите lightdm, затем x11vnc, создайте systemd‑юнит и откройте порт. Однако важнее безопасность: предпочитайте SSH‑туннель или VPN вместо прямого интернета. Используйте чеклист администратора и тестовые сценарии при развертывании.

Важно: регулярно обновляйте систему и проверяйте логи сервиса, чтобы своевременно реагировать на проблемы.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Кино на заднем дворе — как устроить идеальный вечер
Развлечения

Кино на заднем дворе — как устроить идеальный вечер

Изменение фона слайдов в PowerPoint
Офис

Изменение фона слайдов в PowerPoint

Отложить вкладки в Microsoft Edge — как использовать
Браузеры

Отложить вкладки в Microsoft Edge — как использовать

Отключить Windows Recall и защитить приватность
Приватность

Отключить Windows Recall и защитить приватность

Сохранить фото из Gmail в Google Photos
Руководство

Сохранить фото из Gmail в Google Photos

Бесплатный WordPress на Amazon Lightsail
Хостинг

Бесплатный WordPress на Amazon Lightsail