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

Установка TigerVNC на Rocky Linux и безопасное подключение по SSH

9 min read Sysadmin Обновлено 26 Nov 2025
TigerVNC на Rocky Linux — установка и SSH‑туннель
TigerVNC на Rocky Linux — установка и SSH‑туннель

Введение

логотип VNC и пример рабочего стола

Virtual Network Computing (VNC) — это протокол удалённого доступа к графическому интерфейсу (GUI). VNC пересылает события клавиатуры и мыши и обновляет экран клиента с помощью протокола Remote Frame Buffer (RFB). Типичные сценарии использования: техническая поддержка удалённых рабочих столов и доступ к рабочему ПК из дома.

В этом материале вы пройдёте полный цикл: подготовка сервера, установка XFCE, установка и инициализация TigerVNC, настройка systemd‑сервисов, настройка firewalld и подключение через защищённый SSH‑туннель. Материал ориентирован на Rocky Linux 8/9.

Important: используйте непользовательскую (non-root) учётную запись для запуска VNC‑серверов — это упрощает управление и повышает безопасность.

Что такое XFCE и TigerVNC (одно предложение)

XFCE — лёгкая, быстрая графическая среда; TigerVNC — реализация сервера и клиента VNC с поддержкой современных RFB‑функций.

Основные варианты использования

  • Техническая поддержка рабочих столов.
  • Доступ к офисному рабочему столу из дома через SSH/VPN.
  • Лёгкие виртуальные рабочие столы для сервисных приложений.

Предварительные требования

  • Сервер с Rocky Linux 8.x или 9.x.
  • Непользовательская учётная запись с sudo‑привилегиями.
  • Активный firewalld (рекомендуется).
  • Доступ по SSH к серверу (порт 22 или кастомный).

Быстрый план действий

  1. Обновить систему и установить EPEL.
  2. Установить XFCE и Xorg (base-x).
  3. Создать непользовательского пользователя (например, jane) и добавить в wheel при необходимости.
  4. Установить tigervnc-server, инициализировать vncserver под пользователем, отредактировать ~/.vnc/config.
  5. Добавить запись :N=user в /etc/tigervnc/vncserver.users.
  6. Перезагрузить daemon systemd, запустить и включить vncserver@:N.service.
  7. Открыть правила в firewalld или предпочесть SSH‑туннель (более безопасно).

Установка графической среды (XFCE)

По умолчанию Rocky Linux устанавливается без GUI. Для VNC‑серверов рекомендуется лёгкая среда типа XFCE — она быстрее и экономнее по ресурсам.

Перед установкой обновите систему:

sudo dnf update

Добавьте репозиторий EPEL:

sudo dnf install epel-release

Установите XFCE и пакетную группу base-x (Xorg):

sudo dnf groupinstall "Xfce" "base-x"

Подтвердите установку и затем включите графический режим по умолчанию:

sudo systemctl set-default graphical

Если вы не планируете запускать GUI при обычной загрузке сервера, можно пропустить set-default и запускать GUI только на виртуальных сеансах VNC.

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

Для безопасности создайте отдельного пользователя, который будет запускать VNC:

sudo useradd -m -s /bin/bash jane
sudo passwd jane

Если пользователю нужны привилегии sudo:

sudo usermod -aG wheel jane

примеры создания пользователя и пароля

Важно: пароль VNC и системный пароль — разные вещи. Никогда не передавайте пароли по незашифрованным каналам.

Установка TigerVNC

Установите пакет сервера VNC из репозитория:

sudo dnf install tigervnc-server

установка tigervnc

Затем переключитесь на учётную запись пользователя и инициализируйте VNC‑сервис:

su - jane
vncserver

В процессе вас попросят задать пароль VNC (и опционально пароль только для просмотра — введите n, если не нужно). Команда создаст каталог ~/.vnc с конфигурацией и логами.

Пример вывода: процесс будет показан как HOSTNAME:N, где N — номер дисплея (обычно :1 для первого сеанса).

vncserver -list
vncserver -kill :1

инициализация vnc сервера

Остановите дисплей :1 перед редактированием конфигурации.

Конфигурация сеанса XFCE для VNC

Откройте файл конфигурации пользователя:

nano ~/.vnc/config

Пример минимальной конфигурации для XFCE и разрешения 1920x1200:

session=xfce
geometry=1920x1200
localhost
alwaysshared

Параметры:

  • session — графическая сессия (xfce).
  • geometry — разрешение экрана для VNC‑сессии.
  • localhost — слушать только на 127.0.0.1 (важно для безопасности, если вы используете SSH‑туннель).
  • alwaysshared — разрешить нескольким клиентам подключаться одновременно.

настройка конфигурации vnc

Регистрация пользователя в systemd‑шаблоне TigerVNC

Выполните от root редактирование файла:

sudo nano /etc/tigervnc/vncserver.users

Добавьте строку соответствия дисплея и пользователя:

:1=jane

Это означает, что сервис vncserver@:1.service будет запускать VNC под пользователем jane.

Запуск и включение VNC как systemd‑сервиса

TigerVNC поставляет шаблонный systemd‑юнит vncserver@:N.service. После добавления пользователей перезагрузите менеджер systemd:

sudo systemctl daemon-reload

Запустите и включите автоматический запуск для дисплея 1:

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

Если служба запущена корректно, systemctl покажет активное состояние и PID Xvnc.

статус сервиса vnc

Настройка firewalld

По умолчанию firewalld установлен и включён. Наиболее безопасный вариант — не открывать VNC‑порт в публичной зоне и использовать SSH‑туннель. Если требуется прямой доступ, можно добавить сервис vnc-server:

sudo firewall-cmd --add-service=vnc-server --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-services

Если необходимо открыть конкретный порт (например, 5901), используйте:

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

Для ограничения доступа по IP добавьте правило в подходящую зону (например, internal) или используйте rich rules:

sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="203.0.113.10/32" port protocol="tcp" port="5901" accept'
sudo firewall-cmd --reload

конфигурация firewalld

Important: при открытии портов убедитесь, что SELinux контекст и службы соответствуют политике безопасности на сервере.

Подключение по защищённому SSH‑туннелю (рекомендуется)

SSH‑туннель позволяет не открывать порт VNC в публичной сети. На локальной машине (клиенте) выполните:

ssh -L 5901:127.0.0.1:5901 -N -f -l jane 192.168.5.100

где 192.168.5.100 — IP сервера VNC. Опции:

  • -L — локальный порт пробрасывается на хост и порт сервера.
  • -N — не выполнять удалённых команд.
  • -f — перейти в фон после запроса пароля.

После установления туннеля подключайтесь к localhost:5901 в VNC‑клиенте (например, TigerVNC Viewer).

ssh туннель и подключение

В VNC Viewer укажите адрес 127.0.0.1:5901 или localhost:5901 и введите VNC‑пароль, заданный ранее.

вход в vnc через viewer

Если всё настроено правильно, вы увидите XFCE рабочий стол.

id
whoami
sudo su

пример xfce в vnc

Практические рекомендации по безопасности

  • Всегда предпочитайте SSH‑туннель или VPN перед открытием портов VNC в интернет.
  • Запускайте один VNC‑процесс на пользователя: это упрощает учёт и аудит.
  • Храните VNC‑пароли в защищённом менеджере паролей и меняйте их периодически.
  • Ограничьте доступ по IP в firewalld или используйте зоны и rich rules.
  • Рассмотрите использование fail2ban или аналогичного инструмента для защиты от брутфорса на SSH.
  • Если требуется шифрование RFB, проверьте возможности клиента/сервера или используйте stunnel (редко требуется при SSH).

Тонкости SELinux и прав

Если SELinux включён, убедитесь, что контексты файлов и исполняемых файлов соответствуют ожиданиям. В редких случаях потребуется добавить локальные правила или временно переключить SELinux в permissive для диагностики:

sudo setenforce 0   # временно
sudo setenforce 1   # вернуть

Не оставляйте SELinux в permissive в производственной среде — решайте проблемы корректно через политику.

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

  1. Сервис не запускается
    • Просмотрите логи systemd: sudo journalctl -u vncserver@:1.service
    • Проверьте права в каталоге ~/.vnc и корректность ~/.vnc/config.
  2. Клиент показывает “connection refused”
    • Убедитесь, что служба слушает: ss -tln | grep 5901
    • Если localhost в config, убедитесь, что вы используете SSH‑туннель.
  3. Неверный формат DISPLAY
    • Проверьте /etc/tigervnc/vncserver.users и совпадение номера дисплея.
  4. Проблемы с разрешением
    • Отредактируйте geometry в ~/.vnc/config и перезапустите сервис.

Тестирование и критерии приёмки

Критерии приёмки для успешного развёртывания:

  • VNC‑сервис vncserver@:1.service запускается и остаётся активен.
  • При подключении через SSH‑туннель клиент получает рабочий стол XFCE.
  • Доступ через интернет без туннеля отсутствует (если использовался localhost в конфиге).
  • Логи не содержат ошибок уровня critical за последние 24 часа.

Минимальный тестовый план (acceptance):

  1. Инициализация vncserver и создание пароля.
  2. Редактирование ~/.vnc/config и /etc/tigervnc/vncserver.users.
  3. systemctl daemon-reload, start, enable.
  4. Установка SSH‑туннеля и подключение VNC Viewer к localhost:5901.
  5. Проверка пользователя id/whoami и запуска оболочки sudo.

Роли и чек-листы

Администратор (развёртывание):

  • Установил EPEL и XFCE.
  • Создал пользователя и задал пароль.
  • Установил tigervnc-server.
  • Настроил ~/.vnc/config и /etc/tigervnc/vncserver.users.
  • Запустил и включил vncserver@:N.service.
  • Добавил правила firewalld или задокументировал использование SSH‑туннеля.

Техник поддержки (операции):

  • Перезапустить сервис: sudo systemctl restart vncserver@:1.service.
  • Просмотреть логи: sudo journalctl -u vncserver@:1.service.
  • Проверить использование сетевых портов: ss -tln | grep 5901.

Пользователь (подключение):

  • Создать SSH‑туннель: ssh -L 5901:127.0.0.1:5901 -N -f -l jane SERVER_IP.
  • Подключиться VNC Viewer к localhost:5901.
  • Ввести VNC‑пароль и подтвердить рабочий стол.

Альтернативные подходы и когда этот способ не подходит

Альтернативы:

  • Использовать RDP (xrdp) для тесной интеграции с приложениями Windows‑стиля.
  • Использовать коммерческие решения (AnyDesk, TeamViewer) для простоты подключения через NAT и firewall.
  • Организовать полноценный VPN (OpenVPN, WireGuard) и проксировать весь трафик.

Когда VNC не подходит:

  • Требуется аппаратное ускорение графики (игры, 3D): VNC плохо подходит.
  • Нужна полная интеграция с Active Directory и политиками GPO — рассмотреть RDP.

Мини‑методология развёртывания VNC в организации

  1. Определите требования: число одновременных пользователей, допустимые задержки, профиль приложений.
  2. Выберите лёгкую DE (XFCE) для экономии ресурсов.
  3. Автоматизируйте создание пользователей и конфигураций (Ansible playbook).
  4. Настройте централизованную аутентификацию или используйте локальные учётные записи.
  5. Настройте мониторинг и оповещения для systemd‑сервисов и использования портов.
  6. Документируйте политику паролей и процедуру восстановления/смены.

Пример Ansible‑задачи (шаблон)

- name: Install TigerVNC and XFCE
  hosts: vnc_hosts
  become: yes
  tasks:
    - name: Install packages
      dnf:
        name:
          - epel-release
          - tigervnc-server
        state: present
    - name: Install group Xfce and base-x
      command: dnf groupinstall -y "Xfce" "base-x"

Decision tree для выбора способа доступа (Mermaid)

flowchart TD
  A[Нужно удалённое подключение] --> B{Требуется ли шифрование и доступ через интернет?}
  B -- Да --> C[Использовать VPN или SSH‑туннель + VNC]
  B -- Нет --> D{Нужна ли интеграция с Windows?}
  D -- Да --> E[Рассмотреть RDP/xrdp]
  D -- Нет --> F[Можно использовать VNC или коммерч. решение]
  C --> G[Настроить firewall, ограничить IP, мониторинг]
  E --> G
  F --> G

Шаблоны команд для удобства (cheat sheet)

  • Обновление системы: sudo dnf update
  • Установка XFCE: sudo dnf groupinstall “Xfce” “base-x”
  • Инициализация VNC: su - jane; vncserver
  • Остановка дисплея: vncserver -kill :1
  • Запуск systemd: sudo systemctl start vncserver@:1.service
  • Проверка портов: ss -tln | grep 5901
  • Создание SSH‑туннеля: ssh -L 5901:127.0.0.1:5901 -N -f -l jane SERVER_IP

Тестовые случаи и приёмка

  1. После установки vncserver должен создать ~/.vnc и файл config.
  2. systemctl status vncserver@:1.service должен показать Active: active (running).
  3. После SSH‑туннелирования ss -tln | grep 127.0.0.1:5901 должен показать прослушивание.
  4. VNC Viewer успешно отображает XFCE рабочий стол и реагирует на ввод клавиатуры/мыши.

Риски и смягчения

  • Риск: Открытый порт VNC в интернет → Смягчение: использовать SSH/VPN и ограничивать IP.
  • Риск: Перехват пароля VNC → Смягчение: использовать сложные пароли, хранить в менеджере, менять регулярно.
  • Риск: Неправильные права на ~/.vnc → Смягчение: установить правильного владельца и права (700/600).

Локальные варианты и особенности для России / СНГ

  • При развёртывании в корпоративной сети часто используется внутренний LDAP/AD. Учётные записи можно привязать к централизованной аутентификации, но это потребует дополнительной настройки PAM и сессий X.
  • Для удалённых сотрудников VPN (WireGuard/OpenVPN) часто предпочтительнее, чем открытие VNC в публичную сеть.

Короткая сноска по GDPR/конфиденциальности

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

Глоссарий (1‑линия)

  • VNC: протокол удалённого доступа к GUI; RFB: протокол передачи кадра; XFCE: лёгкая DE; SSH‑туннель: локальная переадресация портов через SSH; systemd‑шаблон: юнит вида vncserver@:N.service.

Заключение

В этой инструкции вы установили XFCE, развернули TigerVNC, связали дисплей с пользователем через /etc/tigervnc/vncserver.users, настроили systemd‑сервис и рассмотрели безопасные способы подключения по SSH‑туннелю. Для промышленной эксплуатации автоматизируйте развёртывание, контролируйте доступ и используйте мониторинг. При сомнениях — отдавайте предпочтение VPN/SSH‑туннелю вместо открытия портов в интернет.

Ключевые моменты:

  • Используйте непользовательских пользователей для VNC.
  • Настраивайте localhost в ~/.vnc/config и подключайтесь через SSH.
  • Ограничивайте доступ в firewalld и контролируйте логи.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

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

Проверка состояния SD‑карты SanDisk
Хранение

Проверка состояния SD‑карты SanDisk

Исправить ошибку vc_runtimeMinimum_x64.msi
Windows

Исправить ошибку vc_runtimeMinimum_x64.msi

Как перейти на Docker Compose v2
DevOps

Как перейти на Docker Compose v2

Как заставить Windows озвучивать время
Windows

Как заставить Windows озвучивать время

Как сжать видео на iPhone — простые способы
iPhone

Как сжать видео на iPhone — простые способы

Просмотр групп Active Directory в Windows 10 и 11
Active Directory

Просмотр групп Active Directory в Windows 10 и 11