Подключение к активному рабочему столу Linux через TigerVNC

Введение
VNC (Virtual Network Computing) — это протокол удалённого доступа к графическому рабочему столу. Многие VNC-серверы на Linux создают «виртуальный» дисплей, отличный от того, что отображается на мониторе. TigerVNC содержит утилиту x0vncserver, которая не создаёт виртуальный дисплей, а делится именно существующей сессией X (обычно :0). Это руководство объяснит процесс установки, запуска, автоматизации и базовой защиты.
Что нужно
- Рабочая среда Linux с рабочим столом (X11)
- Права root или sudo для установки пакетов
- Базовые навыки работы в терминале
Пример тестовых окружений: Debian GNU/Linux 9.5 (stretch), Ubuntu 18.04.
Важно: перед установкой обновите списки пакетов:
user@hostname:~$ sudo apt-get updateУстановка TigerVNC
На Debian-подобных системах для доступа к существующему дисплею достаточно небольшого пакета tigervnc-scraping-server (он предоставляет x0vncserver). Установите пакет:
user@hostname:~$ sudo apt-get install tigervnc-scraping-serverПримечание: пакет tigervnc-standalone-server нужен только если вы хотите запускать отдельные виртуальные дисплеи (Xvnc). Для доступа к реальной сессии достаточно x0vncserver.
Создайте директорию для конфигурации VNC и задайте пароль:
user@hostname:~$ mkdir -p ~/.vnc
user@hostname:~$ vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)? nФайл ~/.vnc/passwd будет использоваться x0vncserver для аутентификации.
Запуск VNC-сервера на активной сессии
Короткое описание x0vncserver:
x0tigervncserver is a TigerVNC Server which makes any X display remotely accessible via VNC, TigerVNC or compatible viewers. Unlike Xvnc(1), it does not create a virtual display. Instead, it just shares an existing X server (typically, that one connected to the physical screen).Запустите x0vncserver как обычный пользователь, который владеет сессией (обычно тот, кто вошёл в графический интерфейс). Указываем файл пароля и дисплей :0:
user@hostname:~$ x0vncserver -passwordfile ~/.vnc/passwd -display :0
Wed Oct 10 22:17:16 2018
Geometry: Desktop geometry is set to 1920x1080+0+0
Main: XTest extension present - version 2.2
Main: Listening on port 5900Параметры:
- -passwordfile ~/.vnc/passwd — файл с паролем, созданный vncpasswd
- -display :0 — подключиться к дисплею :0 (обычно активная сессия)
После этого подключайтесь любым VNC-клиентом к хосту на порту 5900.
Если нужно запустить в фоне:
user@hostname:~$ x0vncserver -passwordfile ~/.vnc/passwd -display :0 >/dev/null 2>&1 &Важно: при запуске в фоне сервер не будет реагировать на Ctrl-C; для остановки потребуется завершить процесс по PID.
Остановка VNC-сервера
Если процесс запущен в фоне, найдите его PID и завершите:
user@hostname:~$ ps -fu user | grep [x]0vncserver
user 1328 1 0 23:11 pts/2 00:00:00 /usr/bin/x0vncserver -display :0 -passwordfile /home/user/.vnc/passwd -rfbport 5900Затем убейте процесс:
user@hostname:~$ kill -9 1328Примечание: -9 посылает сигнал SIGKILL; обычно сначала стоит попробовать мягкий kill без -9 (kill PID), чтобы позволить процессу корректно завершиться.
Скрипт для управления сервером
Чтобы упростить управление, авторы предлагают скрипт startvnc (репозиторий runvncserver). Для тестов установите git и psmisc:
user@hostname:~$ sudo apt-get install git psmiscСклонируйте репозиторий и скопируйте скрипт в домашнюю папку:
user@hostname:~$ git clone https://github.com/sebestyenistvan/runvncserver
user@hostname:~$ cp ~/runvncserver/startvnc ~
user@hostname:~$ chmod +x ~/startvncИспользование скрипта:
user@hostname:~$ ./startvnc
Usage: ./startvnc start|stop|restart|statusПримеры:
user@hostname:~$ ./startvnc start
Starting VNC Server on display :0 [ok]
user@hostname:~$ ./startvnc status
Status of the VNC server: [running] (pid: 1328)Проверка порта через fuser (пакет psmisc):
user@hostname:~$ fuser -vn tcp 5900
USER PID ACCESS COMMAND
5900/tcp: user 1328 F.... x0vncserver
Скрипт сохраняет лог в ~/.vnc/logfile. Если возникают ошибки, смотрите этот файл.
Автоматический запуск при входе в X
Чтобы запускать VNC при старте X-сессии, добавьте вызов скрипта в ~/.xsessionrc (замените user на имя пользователя):
user@hostname:~$ echo "/home/user/startvnc start >/dev/null 2>&1" >> ~/.xsessionrcЭтот вызов запустит startvnc при инициализации X. Логи по-прежнему в ~/.vnc/logfile.

Безопасность и туннелирование
Важно: x0vncserver по умолчанию не шифрует трафик. Открывать порт 5900 в интернет небезопасно.
Рекомендации по защите:
- Используйте SSH-туннель: на клиенте
ssh -L 5900:localhost:5900 user@hostи подключайтесь к localhost:5900; это обеспечивает шифрование и аутентификацию по SSH-ключам. - Ограничьте прослушивание только локальным интерфейсом (если доступен параметр) или настройте firewall (ufw/iptables) для разрешения доступа только с нужных адресов.
- Рассмотрите использование более защищённых VNC-реализаций или дополнений, поддерживающих TLS (если требуется прямой доступ без SSH).
- Регулярно обновляйте пакеты и проверяйте журналы (~/.vnc/logfile, системный journal) на подозрительную активность.
Дополнительно: пакет ssvnc предоставляет клиент с поддержкой шифрования, если нужен готовый GUI-решение.
Отладка и распознавание проблем
Появились ошибки при запуске? Проверьте:
- Правильно ли указан дисплей (-display :0). Если у вас Wayland вместо X11, x0vncserver не будет работать.
- Есть ли файл пароля ~/.vnc/passwd и права доступа к нему.
- Логи в ~/.vnc/logfile и системный journal (journalctl -xe).
- Не занят ли порт 5900 другим процессом. Проверьте
fuser -vn tcp 5900. - Запустите x0vncserver без перенаправления вывода, чтобы увидеть сообщения на терминале.
Когда x0vncserver не подойдет:
- Если на системе работает Wayland (по умолчанию в некоторых современных окружениях GNOME), x0vncserver не сможет делиться сессией; понадобятся другие инструменты (например, x11vnc через XWayland или решения, поддерживающие Wayland).
- Если нужен виртуальный отдельный десктоп, используйте tigervnc-standalone-server (Xvnc) или другие VNC-серверы.
Альтернативные подходы
- x11vnc — аналогичная утилита, часто используется для доступа к существующему X-серверу.
- Использование RDP (xrdp) для интеграции с Windows-клиентами.
- Прямой туннель через SSH с пересылкой X11 (для отдельных приложений) — менее удобен для полного рабочего стола.
Критерии приёмки
Чтобы считать настройку успешной, выполните проверки:
- Успешный запуск x0vncserver на дисплее :0 под пользователем с активной сессией.
- Подключение с VNC-клиента к хосту:5900 и отображение реального рабочего стола.
- При автоматическом старте — VNC-сервер запускается при входе в графическую сессию и пишет лог в ~/.vnc/logfile.
- При запуске в фоне процесс присутствует в ps и порт 5900 прослушивается (fuser).
- Обеспечена защита в виде SSH-туннеля или ограничений firewall для удалённого доступа.
Рольовые чек-листы
Администратор:
- Установил tigervnc-scraping-server
- Настроил firewall / SSH для доступа
- Проверил логи и обновления безопасности
Пользователь (владелец сессии):
- Создал ~/.vnc и vncpasswd
- Убедился, что x0vncserver запущен под своей учётной записью
- Проверил подключение локально через VNC-клиент с SSH-туннелем
Инженер поддержки:
- Проверил ~/.vnc/logfile и journalctl
- Нашёл PID через ps / fuser и корректно завершил процесс
- Проверил совместимость с Wayland/Xorg
Тесты и критерии приёмки
Тест 1: Ручной запуск
- Шаги: запустить x0vncserver -passwordfile ~/.vnc/passwd -display :0
- Ожидаемый результат: в консоли сообщение Listening on port 5900; клиент подключается и видит рабочий стол.
Тест 2: Фоновый режим и stop
- Шаги: запустить с >/dev/null 2>&1 &; найти PID; выполнить kill PID
- Ожидаемый результат: процесс исчезает, порт 5900 больше не прослушивается.
Тест 3: Автозапуск
- Шаги: добавить вызов startvnc в ~/.xsessionrc, выйти и войти
- Ожидаемый результат: сервер автоматически запущен после входа; логи создаются в ~/.vnc/logfile.
Краткое объявление (для команды или блога)
Нужен удалённый доступ к реальной сессии рабочего стола на Linux? Используйте TigerVNC (x0vncserver). Простая настройка: установите tigervnc-scraping-server, создайте ~/.vnc/passwd, запустите x0vncserver -display :0 и туннелируйте трафик через SSH для безопасности. Скрипт startvnc автоматизирует запуск и управление.
1‑строчный словарь
- x0vncserver: компонент TigerVNC, который делится существующей X-сессией, не создавая виртуального дисплея.
- :0: нулевой дисплей X, обычно активная сессия, отображаемая на физическом экране.
- vncpasswd: утилита для создания файла пароля (~/.vnc/passwd).
Заключение
Подключение к реальной сессии рабочего стола через TigerVNC — удобный способ удалённого управления настоящим рабочим столом пользователя. Обязательные меры: настройка пароля, логирования и туннелирования трафика через SSH для защиты. Если у вас Wayland или требуется виртуальный десктоп, рассмотрите альтернативы.

Важно: если ваша система использует Wayland вместо Xorg, изучите совместимые инструменты — x0vncserver работает только с X-сервером.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента