LinuxНизкая

Настройка VNC сервера на Linux: пошаговое руководство

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

Обновлено 17 февраля 2026 г.
15-30 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 20.04/22.04CentOS 7/8Debian 11/12TigerVNC 1.10+

Введение / Зачем это нужно

VNC (Virtual Network Computing) — это протокол для удаленного доступа к графическому рабочему столу. Настроенный VNC сервер на Linux позволяет управлять системой из любой точки сети, как если бы вы сидели перед ней. Это полезно для администрирования серверов, работы с GUI-приложениями или доступа к своему рабочему месту извне. В этом гайде вы узнаете, как развернуть VNC сервер на популярных дистрибутивах Linux.

Требования / Подготовка

Перед началом убедитесь, что:

  • У вас есть Linux-система с установленной графической оболочкой (X11). Wayland может потребовать дополнительных настроек.
  • У вас есть права администратора (sudo) или доступ к root-аккаунту.
  • Система подключена к сети, и вы знаете её IP-адрес (используйте ip addr или hostname -I).
  • На удаленном компьютере установлен VNC-клиент (например, TigerVNC Viewer, TightVNC Viewer или RealVNC Viewer).

Шаг 1: Установка VNC сервера

Мы будем использовать TigerVNC — современную и хорошо поддерживаемую реализацию. Установите пакет через менеджер пакетов вашего дистрибутива.

Для Ubuntu/Debian:

sudo apt update
sudo apt install tigervnc-standalone-server tigervnc-common

Для CentOS 7/RHEL 7:

sudo yum install tigervnc-server

Для CentOS 8+/RHEL 8+/Fedora:

sudo dnf install tigervnc-server

Для Debian 11/12:

sudo apt update
sudo apt install tigervnc-standalone-server

После установки проверьте наличие команды vncserver:

vncserver -version

Шаг 2: Настройка пароля и рабочей среды

Установка пароля

Запустите vncpasswd для создания пароля доступа. Выполните команду от имени пользователя, который будет запускать VNC-сессии (обычно ваш обычный пользователь, не root):

vncpasswd

Вам предложат ввести и подтвердить пароль (6-8 символов). Опционально можно задать view-only пароль (только просмотр без управления). Запомните пароль — он понадобится при подключении.

Настройка рабочей среды

VNC серверу нужно указать, какую графическую среду запускать. Создайте или отредактируйте файл ~/.vnc/xstartup (для пользовательской сессии) или глобальный конфиг /etc/vnc/xstartup. Пример для GNOME (стандартная среда в Ubuntu):

#!/bin/bash
xrdb $HOME/.Xresources
xsetroot -solid grey
export XKL_XMODMAP_DISABLE=1
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
gnome-session &

Для KDE Plasma замените последнюю строку на startplasma-x11 &, для XFCE — на startxfce4 &.

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

chmod +x ~/.vnc/xstartup

Также можно создать конфигурационный файл ~/.vnc/config для параметров сервера (опционально):

geometry=1920x1080
depth=24
localhost=no
securitytypes=vncauth

Здесь geometry — разрешение экрана, depth — глубина цвета, localhost=no разрешает подключения извне (по умолчанию только localhost), securitytypes — метод аутентификации.

Шаг 3: Настройка systemd сервиса

Для автоматического запуска VNC сервера при загрузке создайте systemd-юнит. Обычно используется шаблон vncserver@.service, где @ заменяется номером дисплея (например, :1).

Создайте или отредактируйте файл /etc/systemd/system/vncserver@.service (требует sudo):

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1920x1080 :%i
ExecStop=/usr/bin/vncserver -kill :%i
User=ваш_пользователь
Group=ваш_пользователь

[Install]
WantedBy=multi-user.target

Замените ваш_пользователь на имя вашего пользователя Linux (не root). Параметры -depth и -geometry можно настроить под свои нужды или перенести в ~/.vnc/config.

Затем выполните:

sudo systemctl daemon-reload
sudo systemctl enable vncserver@1.service  # для дисплея :1 (порт 5901)
sudo systemctl start vncserver@1.service

Проверьте статус:

sudo systemctl status vncserver@1.service

Если нужно использовать другой дисплей (например, :2 для порта 5902), замените 1 на 2 в командах.

Шаг 4: Настройка фаервола

Откройте порт VNC в фаерволе. По умолчанию для дисплея :1 используется порт 5901 (формула: 5900 + номер дисплея).

Для ufw (Ubuntu/Debian):

sudo ufw allow 5901/tcp

Для firewalld (CentOS/RHEL/Fedora):

sudo firewall-cmd --permanent --add-port=5901/tcp
sudo firewall-cmd --reload

⚠️ Важно: Не открывайте VNC порт напрямую в интернет без дополнительной защиты. Используйте SSH-туннель или VPN, и ограничьте доступ по IP через фаервол (например, sudo ufw allow from 192.168.1.0/24 to any port 5901).

Шаг 5: Подключение с клиента

На удаленном компьютере (Windows, macOS, Linux или мобильном устройстве) установите VNC-клиент. В адресной строке клиента введите:

IP_адрес_сервера:5901

или

IP_адрес_сервера:1

Где IP_адрес_сервера — внешний или внутренний IP вашей Linux-машины. При подключении введите пароль, установленный на шаге 2. Если всё настроено правильно, вы увидите рабочий стол Linux.

Проверка результата

  1. Убедитесь, что VNC сервис активен: sudo systemctl status vncserver@1.service.
  2. Проверьте, что порт слушает: ss -tlnp | grep 5901 (должен показать процесс Xvnc).
  3. Подключитесь с клиента и проверьте:
    • Отображается ли рабочий стол?
    • Работают ли мышь и клавиатура?
    • Можно ли запустить терминал и выполнить команды (например, ls -la)?
  4. Попробуйте перезагрузить сервер и убедитесь, что VNC запускается автоматически.

Возможные проблемы

Ошибка аутентификации или "Password failed"

  • Убедитесь, что пароль установлен через vncpasswd для правильного пользователя.
  • Проверьте, что в ~/.vnc/passwd файл существует и имеет правильные права (chmod 600 ~/.vnc/passwd).
  • Если меняли пароль, перезапустите сервис: sudo systemctl restart vncserver@1.service.

Пустой или чёрный экран после подключения

  • Проверьте логи VNC: cat ~/.vnc/*.log и cat ~/.vnc/*.log.old. Ищите ошибки запуска сессии.
  • Убедитесь, что в ~/.vnc/xstartup указана корректная команда запуска оболочки (например, gnome-session & для GNOME).
  • Если система использует Wayland по умолчанию (например, в Ubuntu 22.04), переключитесь на Xorg на экране входа (значок шестерёнки → "Ubuntu on Xorg").

Порт не открыт или соединение отклонено

  • Проверьте фаервол: sudo ufw status или sudo firewall-cmd --list-all.
  • Убедитесь, что сервис слушает на порту: ss -tlnp | grep 5901.
  • Проверьте, не блокирует ли подключение сетевой интерфейс или облачный фаервол (если сервер в облаке, откройте порт в консоли облачного провайдера).

Низкое разрешение или неправильный размер экрана

  • Измените параметр geometry в ~/.vnc/config или в команде запуска сервиса (например, -geometry 1920x1080).
  • Перезапустите сервис после изменений.

Проблемы с производительностью

  • Уменьшите глубину цвета (depth=16 вместо 24) в конфиге для более быстрой передачи.
  • Используйте сжатие: добавьте -compresslevel 9 в ExecStart сервиса (если поддерживается).
  • Рассмотрите использование SSH-туннеля для шифрования и возможного ускорения в некоторых сетях.

Часто задаваемые вопросы

Какой VNC сервер лучше выбрать для Ubuntu?
Как открыть порт VNC в фаерволе?
Можно ли использовать VNC на Wayland вместо X11?
Как обеспечить безопасность VNC соединения?

Полезное

Установите VNC сервер
Настройте пароль и рабочую среду
Создайте systemd сервис
Настройте фаервол
Запустите и протестируйте

Эта статья помогла вам решить проблему?