- Как настроить и использовать сервер TigerVNC в Linux
- Настройка сервера TigerVNC
- tightvncserver on Ubuntu 20.04 LTS (Focal Fossa)
- 2. Uninstall / Remove tightvncserver package
- 3. Details of tightvncserver package
- 4. References on Ubuntu 20.04 LTS (Focal Fossa)
- 5. The same packages on other Linux Distributions
Как настроить и использовать сервер TigerVNC в Linux
Установка в Debian, Kali Linux, Linux Mint, Ubuntu и их производные:
sudo apt install tigervnc-standalone-server tigervnc-viewer tigervnc-xorg-extension
Для установки в Arch Linux, BlackArch и их производные:
Настройка сервера TigerVNC
Для работы сервера TigerVNC требуется файл ~/.vnc/xstartup. Если этот файл не существует, то TigerVNC пытается его создать. В моих тестах на разных дистрибутивах этот файл обычно приходилось создавать вручную.
Содержимое файла ~/.vnc/xstartup зависит от вашего окружения рабочего стола! То есть для Cinnamon, XFCE, GNOME и т. д. файлы будут разные!
Дело в том, что TigerVNC не используют текущую X сессию, а создаёт новую. Благодаря такому подходу можно, например, для пользователей выполнивших вход перед компьютером и пользователей, подключившихся по VNC, запускать различные окружения рабочего стола (при условии, что они установлены). Настройка запуска сеанса рабочего стола для VNC выполняется в файле ~/.vnc/xstartup. Общая минимальная структура файла ~/.vnc/xstartup следующая:
#!/bin/bash PATH=/usr/bin:/usr/sbin unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS exec ЗАПУСК &
Вместо слова ЗАПУСК должен быть указан исполнимый файл, запускающий X сессию.
- Для Cinnamon: cinnamon-session-cinnamon
- Для XFCE: startxfce4
- Для GNOME: /usr/bin/gnome-session
- Для Kodi: kodi-standalone
- Для Mate: mate-session
- Для lxqt: startlxqt
Вы можете самостоятельно узнать исполнимый файл для любого окружения рабочего стола, установленного в вашей системе, выполнив
В этой папке вы увидите файлы с расширением .desktop, например:
cinnamon2d.desktop cinnamon.desktop gnome.desktop gnome-xorg.desktop kodi.desktop
Откройте с именем интересующего вас окружения рабочего стола и найдите там строку, которая начинается на «Exec», например для файла xfce.desktop:
Exec=cinnamon-session-cinnamon
Следовательно, вместо слова «ЗАПУСК» в файле ~/.vnc/xstartup нужно вписать «cinnamon-session-cinnamon». Тогда файл ~/.vnc/xstartup будет иметь следующее содержимое:
#!/bin/bash PATH=/usr/bin:/usr/sbin unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS exec cinnamon-session-cinnamon &
Как создать пароль для TigerVNC сервера
После неё можно указать файл, в который должен быть сохранён пароль, в противном случае пароль будет сохранён в файл по умолчанию, то есть в $HOME/.vnc/passwd.
После ввода пароля программа спросит:
Would you like to enter a view-only password (y/n)?
То есть хотите ли вы создать пароль для режима «только просмотр» — если хотите, то введите «y», если не хотите, то введите «n».
Запуск сервера TigerVNC
Запуск выполняется любой из следующих команд:
Пароль для аутентификации на сервере будет взят из файла $HOME/.vnc/passwd. Вы можете указать другой файл с паролем, с помощью любой из следующих опций (они все являются псевдонимами друг друга):
Будет выведено примерно следующее:
Cleaning stale pidfile '/home/mial/.vnc/HackWare:1.pid'! New 'HackWare:1 (mial)' desktop at :1 on machine HackWare Starting applications specified in /home/mial/.vnc/xstartup Log file is /home/mial/.vnc/HackWare:1.log Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/mial/.vnc/passwd :1 to connect to the VNC server.
Может показаться, что программа завершила работу — но это не так, процесс переведён в фон. В данном сообщении сказано, что новый рабочий стол создан на дисплее с номером :1, а журнал сохраняется в файл /home/mial/.vnc/HackWare:1.log.
Чтобы убедиться, что сервер действительно работает, проверим, какие порты прослушиваются (смотрите также «Как проверить открытые порты на своём компьютере»):
Как можно увидеть, прослушивается порт 5901, который также считается стандартным для VNC.
Как сделать так, чтобы TigerVNC прослушивал не только 127.0.0.1
По умолчанию TigerVNC прослушивает только интерфейс с IP адресом 127.0.0.1, это LOOPBACK (петлевой) адрес, то есть к VNC серверу можно подключиться только с этого же самого компьютера, либо через SSH туннель. Как именно использовать SSH туннель для подключения к TigerVNC будет показано чуть ниже.
Кроме этого, имеется опция -localhost, которая может принимать значение «yes» или «no». Если указать -localhost no, то TigerVNC сервер будет прослушивать любые входящие подключения, а не только локальные:
Как поменять порт TigerVNC сервера
Прослушиваемый TCP порт для RFB протокола можно поменять опцией -rfbport ПОРТ.
Порт для внутреннего HTTP сервера устанавливается опцией -httpPort.
Как настроить выключение TigerVNC после отключения клиента
- -autokill: завершает работу VNC сервера после завершения X сессии
- -fg: не переводит процесс в статус демона и завершает работу VNC сервера после завершения X сессии
Как использовать SSL сертификаты в TigerVNC для шифрования трафика VNC сессий
Поскольку TLS/SSL шифрование защищает VNC трафик от прослушивания, то нет особого смысла использовать одновременно SSH туннель (который также хорошо зашифрован) и SSL сертификаты. По этой причине при генерации сертификатов в качестве IP адреса указывайте внешний, а не 127.0.0.1.
На сервере сгенерируйте сертификаты (замените оба вхождения «192.168.0.100» на IP-адрес сервера — это может быть как локальный, так и глобальный IP):
openssl req -x509 -newkey rsa -days 365 -nodes -keyout vnc-server-private.pem -out vnc-server.pem -subj '/CN=192.168.0.100' -addext "subjectAltName=IP:192.168.0.100"
Скопируйте файл с сертификатом vnc-server.pem на компьютер с просмотрщиком VNC — то есть клиентам, которые будут подключаться — укажите в клиентском приложении путь до файла сертификата:
На сервере же используйте опцию -X509Key с файлом vnc-server-private.pem и опцию -X509Cert с файлом vnc-server.pem.
По умолчанию в качестве типов безопасности предлагается только VncAuth. С помощью опции -SecurityTypes можно указать любые типы шифрования из списка: None, VncAuth, Plain, TLSNone, TLSVnc, TLSPlain, X509None, X509Vnc, X509Plain.
Для SSL сертификтов (то есть для опций -X509Key и -X509Cert) используются типы безопасности X509None, X509Vnc и X509Plain. Также нужно указать VncAuth, чтобы была возможность выполнять VNC аутентификацию.
Таким образом, собираем все необходимые опции в одну команду:
vncserver -localhost no -X509Key vnc-server-private.pem -X509Cert vnc-server.pem -SecurityTypes X509Vnc,X509Plain,VncAuth
Управление и остановка процессом TigerVNC
Чтобы вывести список запущенных рабочих столов с VNC выполните следующую команду:
- X DISPLAY # — номер дисплея
- RFB PORT # — номер прослушиваемого порта
- PROCESS ID — идентификатор процесса
Чтобы закрыть дисплей с любым номером, используйте опцию -kill, к примеру, чтобы закрыть дисплей :1:
Имеется утилита vncconfig, которая с использованием опции [-set] Xvnc-param=value позволяет изменять опции запущенного VNC сервера на лету.
Чтобы вывести список опций VNC сервера укажите флаг -list:
Обратите внимание, что также нужно использовать опцию -display после которой указывается номер дисплея.
Как настроить автоматический запуск сервера TigerVNC
Создайте файл /etc/systemd/system/vncserver@.service:
sudo gedit /etc/systemd/system/vncserver@.service
[Unit] Description=Remote desktop service (VNC) After=network.target [Service] Type=forking User=mial ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1 ExecStart=/usr/bin/vncserver -localhost no :%i ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=multi-user.target
Обратите внимание на строку User=mial — впишите в неё имя вашего пользователя вместо mial.
Сохраните и закройте этот файл.
Теперь перезагрузите конфигурацию менеджера systemctl для чтения свежесозданного файла юнита следующим образом:
sudo systemctl daemon-reload
Для запуска службы VNC выполните команду:
sudo systemctl start vncserver@1
Обратите внимание, что вместо 1 вы можете указывать любой номер дисплея.
Для проверки статуса службы:
systemctl status vncserver@1
Для добавления службы в автозагрузку:
sudo systemctl enable vncserver@1
sudo systemctl stop vncserver@1
Для удаления службы из автозагрузки:
sudo systemctl disable vncserver@1
tightvncserver on Ubuntu 20.04 LTS (Focal Fossa)
This guide covers the steps necessary to install tightvncserver package:
2. Uninstall / Remove tightvncserver package
Here is a brief guide to show you how to uninstall tightvncserver package:
3. Details of tightvncserver package
Package: tightvncserver
Architecture: amd64
Version: 1.3.10-0ubuntu5
Priority: optional
Section: universe/x11
Source: tightvnc
Origin: Ubuntu
Maintainer: Ubuntu Developers
Original-Maintainer: Ola Lundqvist
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 1847
Provides: vnc-server, xserver
Depends: libc6 (>= 2.15), libjpeg8 (>= 8c), libx11-6, zlib1g (>= 1:1.1.4), perl:any, x11-common | xserver-common, x11-utils, xauth
Recommends: xfonts-base, x11-xserver-utils
Suggests: tightvnc-java
Filename: pool/universe/t/tightvnc/tightvncserver_1.3.10-0ubuntu5_amd64.deb
Size: 662900
MD5sum: 3af0020f4758752adf36718d190e6943
SHA1: 08d788330270d20ff8b13f9e9dde8066e71cdb2a
SHA256: d702f1e30e88f619a2eac9f2de7ade59d5954e346fa865f6cc499330f4376b7a
Homepage: http://www.tightvnc.com
Description: virtual network computing server software
Description-md5: 212aadc6932fc1ffc49df1c9619bc26a
4. References on Ubuntu 20.04 LTS (Focal Fossa)
5. The same packages on other Linux Distributions
tightvncserver (1.3.10-0ubuntu4) Ubuntu 18.04 LTS (Bionic Beaver)
tightvncserver (1.3.10-0ubuntu3) Ubuntu 16.04 LTS (Xenial Xerus)
tightvncserver (1.3.10-0ubuntu5) Ubuntu 20.10 (Groovy Gorilla)
tightvncserver (1:1.3.10-3) Ubuntu 21.10 (Impish Indri)
tightvncserver (1:1.3.10-5) Ubuntu 22.04 LTS (Jammy Jellyfish)
tightvncserver (1:1.3.9-9+deb10u1) Debian 10 (Buster)