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

Как установить и настроить VNC‑сервер на Ubuntu

7 min read Серверы Обновлено 04 Dec 2025
Установка и настройка VNC на Ubuntu
Установка и настройка VNC на Ubuntu

Оглавление

  • Хостинг локального VNC‑сервера в Ubuntu
  • Почему использовать TigerVNC для удалённого сервера
  • Установка TigerVNC в Ubuntu
  • Создание пароля VNC‑сервера
  • Конфигурация и запуск TigerVNC в Ubuntu
  • Создание и запуск systemd‑сервиса TigerVNC
  • Установка клиента TigerVNC и подключение
  • Безопасность и рекомендации по защите соединения
  • Отладка и часто встречающиеся проблемы
  • Контрольный список, SOP и критерии приёмки
  • Короткая сводка

Хостинг локального VNC‑сервера в Ubuntu

Ubuntu имеет встроенную функцию «Удалённый рабочий стол», которая с Ubuntu 16.04 подключается по локальной сети и подходит для простых сценариев совместной работы и доступа внутри LAN.

Чтобы включить встроенный удалённый рабочий стол:

  1. Нажмите клавишу Win и введите settings, затем откройте «Настройки».

Открыть меню настроек Ubuntu

  1. В окне настроек нажмите значок поиска и введите «sharing» (или «Общий доступ»).

Поиск категории Общий доступ в настройках Ubuntu

  1. В левой панели откройте раздел «Общий доступ», затем «Удалённый рабочий стол».

Открыть меню Удалённый рабочий стол

  1. Включите «Удалённый рабочий стол», активируйте опцию «Включить устаревший протокол VNC» и при необходимости разрешите «Удалённое управление», чтобы гостевые пользователи могли управлять клавиатурой и мышью.

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

Важно: встроенный компонент удобен для LAN, но обычно не подходит для публичного доступа через интернет — для этого лучше использовать TigerVNC с дополнительными мерами безопасности.

Почему использовать TigerVNC для удалённого сервера

TigerVNC — надёжная реализация VNC, ориентированная на производительность, кроссплатформенность и шифрование данных. Его удобно разворачивать на удалённых VPS, если нужно предоставить полный графический рабочий стол, а не отдельное приложение через X forwarding.

Логотип и сайт TigerVNC

Ключевые преимущества TigerVNC:

  • Поддержка шифрования (TLS/X509) и совместимости с SSH‑туннелями.
  • Поддержка виртуальных дисплеев (например :1, :2) для отдельных пользователей.
  • Быстрая отрисовка и адаптация под полосу пропускания.

Установка TigerVNC в Ubuntu

  1. Обновите систему:
sudo apt update && sudo apt upgrade -y

Обновление системы Ubuntu

  1. Установите TigerVNC и вспомогательные пакеты:
sudo apt install tigervnc-standalone-server tigervnc-common tigervnc-viewer ssh xterm dbus-x11 -y

Примечание: я добавил tigervnc-common и tigervnc-viewer в список, чтобы на сервере и на локальном компьютере были необходимые компоненты.

Установка TigerVNC и зависимостей

Создание пароля VNC‑сервера

После установки создайте мастер‑пароль для VNC:

vncpasswd

Программа запросит ввод пароля (минимум 6 символов) и опцию «view‑only» — пароль только для просмотра, без управления мышью и клавиатурой.

Создание пароля для пользователя VNC

Если не нужен отдельный пароль для просмотра, ответьте «n» (No).

Конфигурация и запуск TigerVNC в Ubuntu

Ниже шаги для присвоения виртуальных дисплеев пользователям и настройки пользовательского xstartup, чтобы при подключении загружалось нужное окружение рабочего стола.

  1. Откройте файл с сопоставлением дисплеев и пользователей:
sudo nano /etc/tigervnc/vncserver.users

Если файл пустой, добавьте строки вида:

:1=yourusername
:2=otheruser

Где «:1» — виртуальный дисплей, а «yourusername» — локальный пользователь Ubuntu, которому будет принадлежать сеанс.

Добавление нового пользователя в vncserver.users

  1. Создайте файл запуска сессии для пользователя (пример для GNOME):
nano /home/$USER/.vnc/xstartup

Вставьте в файл следующий скрипт:

#!/bin/bash

PATH=/usr/bin:/usr/sbin
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec /usr/bin/gnome-session

Объяснение:

  • PATH: гарантирует доступ к стандартным исполняемым файлам в сессии VNC.
  • unset: очищает переменные сессии родительской оболочки.
  • exec /usr/bin/gnome-session: запускает GNOME как рабочее окружение.

Если используете другое окружение (Xfce, KDE), замените последнюю строку на соответствующий запуск, например:

  • Xfce: exec /usr/bin/startxfce4
  • LXDE: exec /usr/bin/startlxde

Сделайте файл исполняемым:

chmod u+x /home/$USER/.vnc/xstartup

Пример пустого xstartup перед настройкой

Дополнительные советы:

  • Убедитесь, что домашняя директория и .vnc принадлежат нужному пользователю: sudo chown -R $USER:$USER /home/$USER/.vnc.
  • Для тестового запуска можно временно запустить сервер вручную: vncserver :1 и затем остановить vncserver -kill :1.

Пример xstartup после настройки

Создание и запуск systemd‑сервиса TigerVNC

Чтобы автоматически запускать VNC‑сеансы при загрузке, создайте шаблонный unit systemd.

  1. Создайте файл сервиса:
sudo nano /etc/systemd/system/vncserver@.service
  1. Вставьте в файл следующий шаблон (замените user на реальное имя учетной записи, например ramces):
[Unit]
Description=TigerVNC server for %i
After=syslog.target network.target

[Service]
Type=forking
User=ramces
Group=ramces
WorkingDirectory=/home/ramces

PIDFile=/home/ramces/.vnc/%H:%i.pid
ExecStart=/usr/bin/vncserver -localhost no :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

Пояснения:

  • Type=forking — vncserver запускает фоновый процесс.
  • -localhost no — разрешает подключение извне; для большей безопасности оставьте -localhost yes и используйте SSH‑туннель.
  • PIDFile помогает systemd отслеживать процесс.
  1. Примените и включите сервис:
sudo systemctl daemon-reload
sudo systemctl enable vncserver@1.service
sudo systemctl start vncserver@1.service
sudo systemctl status vncserver@1.service

Если предпочитаете запускать дисплей под другим номером, измените vncserver@1 на vncserver@2 и т.д.

Перед перезагрузкой графического интерфейса (если вы планируете переход в multi‑user.target), сохраните работу и убедитесь, что вы можете подключиться по SSH или другим каналам доступа.

Создание systemd сервиса для VNC

Установка клиента TigerVNC и подключение

На клиентской машине (например, локальный ноутбук) установите просмотрщик:

sudo apt install tigervnc-viewer -y

Установка VNC Viewer на клиенте

Рекомендуемый безопасный метод — SSH‑туннель.

Создайте туннель (с локального клиента на сервер):

ssh -L 5901:localhost:5901 youruser@your.server.ip

Примеры из статьи (локальный пример):

ssh -L 5901:192.168.68.155:5901 ramces@192.168.68.155

После установления туннеля подключитесь локально через vncviewer:

vncviewer localhost:5901

Если вы решили не использовать SSH‑туннель и разрешили доступ по сети (в service указано -localhost no), подключайтесь напрямую по адресу server_ip:5901 (или без порта при использовании встроенного Remote Desktop).

vncviewer 192.168.68.155:5901
vncviewer 192.168.68.155

Создание SSH туннеля для VNC соединения

Рабочая удалённая сессия Ubuntu через VNC

Безопасность и рекомендации по защите соединения

Важно: VNC по умолчанию не предназначен для публичного доступа без дополнительной защиты. Рекомендации:

  • SSH‑туннель — самый простой и надёжный способ шифрования.
  • Если нужен удалённый доступ без SSH, настройте TLS/X509 в TigerVNC и используйте проверенные сертификаты.
  • Ограничьте доступ через UFW/iptables к портам 5900+ только для доверенных адресов.
  • Используйте strong‑пароли и по возможности двухфакторную аутентификацию для SSH.
  • Установите fail2ban и правило для защиты SSH и (опционально) доступа к VNC.

Примеры команд UFW:

sudo ufw allow OpenSSH
sudo ufw allow from 192.168.68.0/24 to any port 5901 proto tcp
sudo ufw enable

Если вы открываете порт VNC в интернет, крайне рекомендуется включить -localhost yes и пробрасывать порт через SSH‑сервер или VPN.

Настройка TLS (кратко)

TigerVNC поддерживает TLS/SSL через X509. Общая последовательность:

  1. Сгенерировать самоподписанный сертификат или получить сертификат от CA.
  2. Настроить сервер и клиент с параметрами -X509Key/-X509Cert/-X509CA при запуске.
  3. Тестировать соединение и проверять цепочку сертификатов.

Пример запуска клиента с указанием CA:

vncviewer ramces@192.168.68.155 -X509CA /path/to/ca.pem

Отладка и частые проблемы

Проблема: отсутствуют шрифты

Чаще всего проблема — неустановленный набор системных шрифтов в окружении пользователя. Решение:

sudo apt install fonts-dejavu fonts-dejavu-extra fonts-noto-core -y
fc-cache -f -v

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

Частая причина — конфликт физического и виртуального Xorg. TigerVNC не всегда поддерживает одновременное использование нескольких Xorg‑инстансов. Возможные решения:

  • Выйдите из текущей локальной сессии на сервере: sudo gnome-session-quit (или завершите графическую сессию через GUI).
  • Перезапустите VNC‑сеанс: vncserver -kill :1 и vncserver :1.
  • Проверьте права на .Xauthority и .vnc.

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

  • Проверьте, запущен ли сервис: systemctl status vncserver@1.
  • Убедитесь, что firewall не блокирует порт 5901 (sudo ufw status).
  • Для SSH‑туннеля проверьте локальный проброс портов и что вы подключаетесь к localhost на клиенте.

Логи и диагностика

  • Просмотрите логи VNC: /home/youruser/.vnc/*.log
  • systemd: journalctl -u vncserver@1.
  • Если GNOME не запускается — проверьте ошибки в ~/.xsession-errors.

Контрольный список и SOP для быстрой установки (администратор)

SOP: Быстрая развёртка VNC на Ubuntu (минимальный набор действий):

  1. Обновить систему: sudo apt update && sudo apt upgrade -y.
  2. Установить пакеты: sudo apt install tigervnc-standalone-server tigervnc-viewer ssh xterm dbus-x11 -y.
  3. Выполнить vncpasswd от имени пользователя, которому нужен доступ.
  4. Добавить строку в /etc/tigervnc/vncserver.users: :1=youruser.
  5. Создать ~/.vnc/xstartup, настроить исполнение и окружение.
  6. Создать /etc/systemd/system/vncserver@.service, заменить user, дать daemon-reload и enable/start сервис.
  7. Настроить firewall и SSH.
  8. Протестировать подключение через SSH‑туннель, затем через клиент.

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

  • Сервис vncserver@1 активен и в статусе active (running).
  • При подключении через SSH‑туннель рабочий стол грузится и отображает полноценную среду GNOME/Xfce.
  • Файлы конфигурации имеют корректные права и принадлежат целевому пользователю.

Ролевые чек‑листы

Для администратора:

  • Обновление системы завершено.
  • Установлены требуемые пакеты.
  • Создан пользовательский xstartup и права проверены.
  • Создан systemd unit и сервис включён.
  • Настроен firewall и fail2ban.
  • Проведено тестовое подключение через SSH.

Для конечного пользователя:

  • Пароль VNC получен и проверен.
  • На компьютере установлен vncviewer.
  • Проведён тест входа и проверка приложений (браузер, терминал).
  • Сообщены инструкции по безопасному подключению (SSH/VPN).

Мини‑методология развёртывания (шаги высокого уровня)

  1. Подготовка: определить список пользователей и номера дисплеев.
  2. Установка: пакеты и зависимые компоненты.
  3. Конфигурация: vncserver.users, xstartup, права доступа.
  4. Автоматизация: systemd‑unit и включение при старте.
  5. Безопасность: SSH/VPN/TLS, firewall, мониторинг.
  6. Тестирование: функциональные тесты клиента и стресс‑тесты сети.

Decision flowchart

flowchart TD
  A[Нужно ли подключение извне 'Internet'?] -->|Да| B[Есть SSH/VPN?]
  B -->|Да| C[Использовать SSH‑туннель или VPN]
  B -->|Нет| D[Настроить TLS/X509 и ограничить IP в firewall]
  A -->|Нет| E[Использовать -localhost no и открыть порт в LAN]
  C --> F[Ограничить доступ по IP и включить fail2ban]
  D --> F
  E --> F
  F --> G[Тестирование и мониторинг]

Тесты и критерии приёмки

Примеры тестовых сценариев:

  • Тест 1: Подключение по SSH‑туннелю, загрузка GNOME, запуск браузера — PASS/FAIL.
  • Тест 2: Подключение клиента из сети LAN без SSH — PASS только если firewall и пароли настроены.
  • Тест 3: Попытка подключения с неверным паролем — вход должен быть запрещён.

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

  • Время отклика не превышает приемлемого порога (субъективно оценивается на целевой сети).
  • Отсутствие ошибок в логах VNC при старте сессии.
  • Пароль просмотра (view‑only) работает отдельно от мастер‑пароля.

Короткая сводка

TigerVNC даёт гибкий и производительный способ предоставления полного графического рабочего стола на Ubuntu. Для безопасного развёртывания используйте SSH‑туннель или TLS, настраивайте systemd‑unit для автоматического старта, и обязательно контролируйте доступ через firewall. В статье приведён SOP, чек‑листы, решения для типичных ошибок и рекомендации по тестированию.

Image credit: Unsplash. All alterations and screenshots by Ramces Red.

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

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

Как исправить ошибку run.vbs в Windows 10
Windows

Как исправить ошибку run.vbs в Windows 10

Отключение Windows Modules Installer Worker (TiWorker)
Windows

Отключение Windows Modules Installer Worker (TiWorker)

Как архивировать старые посты в соцсетях
Конфиденциальность

Как архивировать старые посты в соцсетях

Блокировка писем без отправителя в Outlook
Электронная почта

Блокировка писем без отправителя в Outlook

Сравнить товары в Access и объединить имена
Базы данных

Сравнить товары в Access и объединить имена

Как исправить высокую загрузку CPU от Nvidia Container
Windows

Как исправить высокую загрузку CPU от Nvidia Container