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

О чём эта инструкция
В этом материале шага за шагом показано, как настроить 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.
Перезагрузите компьютер, чтобы изменения вступили в силу:
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 слушает порт 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, затем подключитесь.
Получить IP на Ubuntu можно так:
ip addrКлиент предупредит о нешифрованном соединении. Это нормальное поведение для прямого VNC. Нажмите Continue и введите пароль, который вы задали в файле юнита.
Проблема экранной блокировки и её отключение
Если экран блокируется при подключении, это помешает управлению. Откройте Настройки > Конфиденциальность > Блокировка экрана и отключите Automatic Screen Lock и Lock Screen on Suspend.
Важно: отключение блокировки уменьшает безопасность. Включайте её снова, когда удалённый доступ не нужен.
Безопасность и шифрование — лучшие практики
Прямое VNC соединение обычно не шифрует весь трафик. Рекомендую один из следующих подходов:
- SSH‑туннель (простой и безопасный)
На клиенте выполните:
ssh -L 5900:localhost:5900 user@remote_ipЗатем в VNC‑клиенте подключайтесь к localhost:5900. Всё трафик пойдёт через зашифрованный SSH‑канал.
- VPN
Используйте корпоративный VPN или WireGuard, чтобы скрыть VNC за виртуальной приватной сетью.
- 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)
- Проверка статуса
systemctl status x11vnc.service- Перезапуск при ошибке
sudo systemctl restart x11vnc.service
journalctl -u x11vnc.service --since "10 minutes ago"- Откат пароля
- Заменить параметр -passwd в юните или создать файл пароля через vncpasswd
- Обновить конфигурацию: sudo systemctl daemon-reload
- Перезапустить сервис
- Быстрая диагностика сети
sudo ss -ltnp | grep 5900
sudo ufw status verboseКритерии приёмки
- Сервис x11vnc active (running)
- Порт 5900 слушает локально или на требуемом интерфейсе
- Удалённый клиент успешно подключается и видит графический рабочий стол
- Пароль аутентификации работает
- При использовании SSH‑туннеля соединение устанавливается и передача видна
Тестовые кейсы
- Локальное подключение по VNC на той же сети — PASS если виден рабочий стол
- Подключение через SSH‑туннель — PASS если экран доступен и трафик защищён
- Перезапуск 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 вместо прямого интернета. Используйте чеклист администратора и тестовые сценарии при развертывании.
Важно: регулярно обновляйте систему и проверяйте логи сервиса, чтобы своевременно реагировать на проблемы.
Похожие материалы
Кино на заднем дворе — как устроить идеальный вечер
Изменение фона слайдов в PowerPoint
Отложить вкладки в Microsoft Edge — как использовать
Отключить Windows Recall и защитить приватность
Сохранить фото из Gmail в Google Photos