Как установить и настроить VNC‑сервер на Ubuntu
Оглавление
- Хостинг локального VNC‑сервера в Ubuntu
- Почему использовать TigerVNC для удалённого сервера
- Установка TigerVNC в Ubuntu
- Создание пароля VNC‑сервера
- Конфигурация и запуск TigerVNC в Ubuntu
- Создание и запуск systemd‑сервиса TigerVNC
- Установка клиента TigerVNC и подключение
- Безопасность и рекомендации по защите соединения
- Отладка и часто встречающиеся проблемы
- Контрольный список, SOP и критерии приёмки
- Короткая сводка
Хостинг локального VNC‑сервера в Ubuntu
Ubuntu имеет встроенную функцию «Удалённый рабочий стол», которая с Ubuntu 16.04 подключается по локальной сети и подходит для простых сценариев совместной работы и доступа внутри LAN.
Чтобы включить встроенный удалённый рабочий стол:
- Нажмите клавишу Win и введите settings, затем откройте «Настройки».

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

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

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

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

Ключевые преимущества TigerVNC:
- Поддержка шифрования (TLS/X509) и совместимости с SSH‑туннелями.
- Поддержка виртуальных дисплеев (например :1, :2) для отдельных пользователей.
- Быстрая отрисовка и адаптация под полосу пропускания.
Установка TigerVNC в Ubuntu
- Обновите систему:
sudo apt update && sudo apt upgrade -y
- Установите TigerVNC и вспомогательные пакеты:
sudo apt install tigervnc-standalone-server tigervnc-common tigervnc-viewer ssh xterm dbus-x11 -yПримечание: я добавил tigervnc-common и tigervnc-viewer в список, чтобы на сервере и на локальном компьютере были необходимые компоненты.

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

Если не нужен отдельный пароль для просмотра, ответьте «n» (No).
Конфигурация и запуск TigerVNC в Ubuntu
Ниже шаги для присвоения виртуальных дисплеев пользователям и настройки пользовательского xstartup, чтобы при подключении загружалось нужное окружение рабочего стола.
- Откройте файл с сопоставлением дисплеев и пользователей:
sudo nano /etc/tigervnc/vncserver.usersЕсли файл пустой, добавьте строки вида:
:1=yourusername
:2=otheruserГде «:1» — виртуальный дисплей, а «yourusername» — локальный пользователь Ubuntu, которому будет принадлежать сеанс.

- Создайте файл запуска сессии для пользователя (пример для 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
Дополнительные советы:
- Убедитесь, что домашняя директория и
.vncпринадлежат нужному пользователю:sudo chown -R $USER:$USER /home/$USER/.vnc. - Для тестового запуска можно временно запустить сервер вручную:
vncserver :1и затем остановитьvncserver -kill :1.

Создание и запуск systemd‑сервиса TigerVNC
Чтобы автоматически запускать VNC‑сеансы при загрузке, создайте шаблонный unit systemd.
- Создайте файл сервиса:
sudo nano /etc/systemd/system/vncserver@.service- Вставьте в файл следующий шаблон (замените 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 отслеживать процесс.
- Примените и включите сервис:
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 или другим каналам доступа.

Установка клиента TigerVNC и подключение
На клиентской машине (например, локальный ноутбук) установите просмотрщик:
sudo apt install tigervnc-viewer -y
Рекомендуемый безопасный метод — 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

Безопасность и рекомендации по защите соединения
Важно: 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. Общая последовательность:
- Сгенерировать самоподписанный сертификат или получить сертификат от CA.
- Настроить сервер и клиент с параметрами
-X509Key/-X509Cert/-X509CAпри запуске. - Тестировать соединение и проверять цепочку сертификатов.
Пример запуска клиента с указанием 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 (минимальный набор действий):
- Обновить систему:
sudo apt update && sudo apt upgrade -y. - Установить пакеты:
sudo apt install tigervnc-standalone-server tigervnc-viewer ssh xterm dbus-x11 -y. - Выполнить
vncpasswdот имени пользователя, которому нужен доступ. - Добавить строку в
/etc/tigervnc/vncserver.users::1=youruser. - Создать
~/.vnc/xstartup, настроить исполнение и окружение. - Создать
/etc/systemd/system/vncserver@.service, заменить user, датьdaemon-reloadиenable/startсервис. - Настроить firewall и SSH.
- Протестировать подключение через SSH‑туннель, затем через клиент.
Критерии приёмки:
- Сервис vncserver@1 активен и в статусе active (running).
- При подключении через SSH‑туннель рабочий стол грузится и отображает полноценную среду GNOME/Xfce.
- Файлы конфигурации имеют корректные права и принадлежат целевому пользователю.
Ролевые чек‑листы
Для администратора:
- Обновление системы завершено.
- Установлены требуемые пакеты.
- Создан пользовательский xstartup и права проверены.
- Создан systemd unit и сервис включён.
- Настроен firewall и fail2ban.
- Проведено тестовое подключение через SSH.
Для конечного пользователя:
- Пароль VNC получен и проверен.
- На компьютере установлен vncviewer.
- Проведён тест входа и проверка приложений (браузер, терминал).
- Сообщены инструкции по безопасному подключению (SSH/VPN).
Мини‑методология развёртывания (шаги высокого уровня)
- Подготовка: определить список пользователей и номера дисплеев.
- Установка: пакеты и зависимые компоненты.
- Конфигурация: vncserver.users, xstartup, права доступа.
- Автоматизация: systemd‑unit и включение при старте.
- Безопасность: SSH/VPN/TLS, firewall, мониторинг.
- Тестирование: функциональные тесты клиента и стресс‑тесты сети.
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.
Похожие материалы
Как исправить ошибку run.vbs в Windows 10
Отключение Windows Modules Installer Worker (TiWorker)
Как архивировать старые посты в соцсетях
Блокировка писем без отправителя в Outlook
Сравнить товары в Access и объединить имена