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

Установка и настройка VNC-сервера на CentOS 8

• 4 min read • Linux • Обновлено 22 Nov 2025
VNC на CentOS 8: установка и настройка
VNC на CentOS 8: установка и настройка

Логотип VNC и изображение окна удалённого рабочего стола

VNC (Virtual Network Computing) — это приложение для совместного использования графического интерфейса рабочего стола по сети. Оно использует протокол Remote Frame Buffer (RFB) и работает по модели «сервер — клиент». Чаще всего VNC применяют для удалённого администрирования, техподдержки и доступа к рабочим столам серверов или рабочих станций.

Пререквизиты

  • Сервер или рабочая станция с CentOS 8 Desktop.
  • Доступ root или учётная запись с sudo.
  • Свободный порт 5901 (VNC на дисплее :1).

Важно: в этой инструкции предполагается, что вы управлять системой по SSH или локально как root/sudo.

Краткая терминология

  • VNC сервер: приложение на удалённой машине, которое делится рабочим столом.
  • VNC клиент (Viewer): программа на вашей машине, подключающаяся к серверу.
  • Дисплей :1 — второй виртуальный дисплей (первый обычно :0) — соответствует порту 5901.

Перед началом: SELinux

По умолчанию SELinux включён в CentOS 8. В оригинальном руководстве предлагается полностью отключить SELinux, но безопаснее перевести его в режим permissive или настроить политику. Ниже показано, как временно перевести SELinux в permissive, а также как изменить конфигурацию при необходимости.

Временный (до перезагрузки) перевод в permissive:

setenforce 0

Постоянное изменение в конфигурации (если вы всё же хотите перевести в disabled):

nano /etc/sysconfig/selinux

Найдите строку:

SELINUX=enforcing

и замените на:

SELINUX=permissive

Сохраните файл и перезагрузите систему, если вносятся постоянные изменения.

Важно: безопасность сервера ухудшается при полном отключении SELinux. Рекомендуется сначала попробовать permissive и, если требуется, добавить исключения в политику.

Установка VNC Server

TigerVNC доступен в репозитории CentOS 8. Установите пакет командой:

dnf install tigervnc-server tigervnc-server-module -y

После установки можно перейти к созданию пользователя и настройке пароля.

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

Создайте отдельную учётную запись для удалённого рабочего стола (пример: hitesh):

useradd hitesh

Установите пароль для пользователя:

passwd hitesh

Переключитесь на нового пользователя и задайте VNC-пароль:

su - hitesh
vncpasswd

Вас попросят ввести пароль и подтвердить его. Также можно не задавать пароль только для просмотра (view-only). Затем выйдите из сессии пользователя:

exit

Совет: используйте сильный пароль и не делитесь им по незащищённым каналам.

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

Создайте файл юнита systemd для запуска VNC под учётной записью пользователя. Имя файла использует шаблон [email protected]. Откройте редактор:

nano /etc/systemd/system/[email protected]

Добавьте в файл следующие строки (проверьте, что указаны правильные User и WorkingDirectory):

[Unit]
Description=Remote Desktop VNC Service
After=syslog.target network.target

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

ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver -autokill %i
ExecStop=/usr/bin/vncserver -kill %i

[Install]
WantedBy=multi-user.target

Сохраните файл и перезагрузите демон systemd:

systemctl daemon-reload

Запустите сервис на дисплее :1 и включите автозапуск:

systemctl start vncserver@:1.service
systemctl enable vncserver@:1.service

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

systemctl status vncserver@:1.service

Вы увидите вывод, похожий на этот (с информацией о процессах Xvnc и зависимостях):

? vncserver@:1.service - Remote Desktop VNC Service
   Loaded: loaded (/etc/systemd/system/[email protected]; disabled; vendor preset: disabled)
   Active: active (running) since Fri 2020-03-06 03:45:50 EST; 45s ago
  Process: 2196 ExecStart=/usr/bin/vncserver -autokill :1 (code=exited, status=0/SUCCESS)
  Process: 2190 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
    Tasks: 180 (limit: 12537)
   Memory: 347.3M
   CGroup: /system.slice/system-vncserver.slice/vncserver@:1.service
           ??2203 /usr/bin/Xvnc :1 -auth /home/hitesh/.Xauthority -desktop centos8:1 (hitesh) -fp catalogue:/etc/X11/fontpath.d -geometry 1024>
           ??2210 sh -c (/home/hitesh/.vnc/xstartup; /usr/bin/vncserver -kill :1) >> '/home/hitesh/.vnc/centos8:1.log' 2>&1 &
           ??2211 /bin/sh /home/hitesh/.vnc/xstartup
           ??2212 /usr/libexec/gnome-session-binary
           ??2221 dbus-launch --sh-syntax --exit-with-session
           ??2222 /usr/bin/dbus-daemon --syslog --fork --print-pid 6 --print-address 8 --session
           ??2230 /usr/bin/ssh-agent /etc/X11/xinit/Xclients
           ??2246 /usr/libexec/at-spi-bus-launcher
           ??2251 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 3
           ??2253 /usr/libexec/at-spi2-registryd --use-gnome-session
           ??2257 /usr/libexec/gvfsd
           ??2264 /usr/libexec/gvfsd-fuse /home/hitesh/.gvfs -f -o big_writes
           ??2292 /usr/bin/gnome-keyring-daemon --start --components=secrets
           ??2336 /usr/libexec/gsd-power

Проверим, что VNC слушает на порту 5901:

netstat -tunlp | grep 5901

Ожидаемый вывод:

tcp        0      0 0.0.0.0:5901            0.0.0.0:*               LISTEN      2203/Xvnc           
tcp6       0      0 :::5901                 :::*                    LISTEN      2203/Xvnc

Открытие порта в брандмауэре (firewalld)

Если включён firewalld, откройте порт 5901:

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

Если вы используете iptables или внешний брандмауэр, настройте правила соответствующим образом.

Подключение к VNC-серверу

С клиентской машины (Windows, Linux или macOS) откройте VNC Viewer и укажите адрес сервера в формате:

your-server-ip:5901

Окно подключения VNC Viewer с полем адреса сервера

Нажмите Continue, затем введите VNC-пароль в диалоговом окне авторизации:

Диалог ввода пароля VNC в клиенте

После успешной авторизации вы увидите удалённый рабочий стол CentOS:

Рабочий стол CentOS, открытый по VNC

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

  • Используйте SSH-туннель для шифрования трафика VNC. Пример команды на клиенте:
ssh -L 5901:localhost:5901 -N -l hitesh your-server-ip

Затем подключайтесь к localhost:5901 в VNC Viewer.

  • Ограничьте доступ брандмауэром по IP-адресам.
  • Не оставляйте SELinux полностью отключённым без необходимости.
  • Рассмотрите альтернативы: x11vnc (если нужен доступ к существующей сессии :0) или RDP для Windows-подобного опыта.

Устранение неполадок

  • Нет прослушивания на 5901: проверьте systemctl status и журнал /home/hitesh/.vnc/*:1.log.
  • Сервер запускается, но пустой или черный экран: проверьте файл xstartup в ~/.vnc и права доступа.
  • Аутентификация не проходит: убедитесь, что пароль vncpasswd создан для того же пользователя, под которым запускается сервис.
  • SELinux блокирует работу: временно setenforce 0, посмотрите AVC-логи в /var/log/audit/audit.log.

Чеклист для быстрого контроля (роль: системный администратор)

  • Установлен tigervnc-server и tigervnc-server-module
  • Создан пользователь для VNC и задан vncpasswd
  • Создан и загружен systemd-юнит в /etc/systemd/system/[email protected]
  • Сервис запущен systemctl start vncserver@:1.service
  • Порт 5901 открыт в брандмауэре или настроен SSH-туннель
  • Протоколирование и журналы доступны для отладки
  • План обновления и ротации паролей задокументирован

Краткий набор команд (cheat sheet)

# Установка
dnf install tigervnc-server tigervnc-server-module -y

# Пароли и пользователь
useradd hitesh
passwd hitesh
su - hitesh
vncpasswd
exit

# systemd
nano /etc/systemd/system/[email protected]
systemctl daemon-reload
systemctl start vncserver@:1.service
systemctl enable vncserver@:1.service
systemctl status vncserver@:1.service

# Фаервол
firewall-cmd --permanent --add-port=5901/tcp
firewall-cmd --reload

# SSH туннель (клиент)
ssh -L 5901:localhost:5901 -N -l hitesh your-server-ip

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

  • VNC-сервис активен и слушает на 0.0.0.0:5901.
  • Можно подключиться с клиента и увидеть графический рабочий стол под пользователем hitesh.
  • Доступ ограничен брандмауэром или туннелем SSH.

Заключение

Вы успешно установили и настроили VNC-сервер на CentOS 8. Следуйте рекомендациям по безопасности: используйте SSH-туннели, ограничьте доступ по IP и не отключайте SELinux без обоснования. Используйте чеклист и набор команд для быстрого восстановления и аудита.

Важно: для производственной среды рассмотрите использование VPN/SSH и регулярную проверку журналов безопасности.

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

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

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро