Вопрос или проблема
Я пытаюсь настроить TigerVNC – или любой другой VNC сервер – на Ubuntu 20.04, и начинаю разочаровываться, потому что ни одна из инструкций, которые я нахожу, на самом деле не работает, хотя на CentOS у меня это получилось. Вот чего я хочу достигнуть, и, насколько я понимаю, TigerVNC должен с этим справиться:
- Предоставить VNC сервис нескольким пользователям
- Пользователь должен вводить имя пользователя и пароль
- Это должно работать с systemd
Я просмотрел больше полезных веб-страниц, чем хочу перечислять, но последняя, слегка успешная, была TigerVNC (на Arch Linux), секция Выполнение Xvnc с XDMCP для сеансов по требованию
.
Система проста: Ubuntu 20.04 с рабочим столом по умолчанию, который, кажется, основан на GNOME – не то, что я бы выбрал, но это не для моего использования. /var/log/syslog
перечисляет множество выводов, когда я пытаюсь подключиться, но я думаю, что следующее содержит соответствующую ошибку:
...
Jul 22 14:22:34 megatron org.gnome.SettingsDaemon.Wacom.desktop[555768]: Unable to init server: Could not connect: Connection refused
Jul 22 14:22:34 megatron org.gnome.SettingsDaemon.Wacom.desktop[555768]: Cannot open display:
Jul 22 14:22:34 megatron org.gnome.SettingsDaemon.Keyboard.desktop[555770]: Unable to init server: Could not connect: Connection refused
Jul 22 14:22:34 megatron org.gnome.SettingsDaemon.Keyboard.desktop[555770]: Cannot open display:
Jul 22 14:22:34 megatron gnome-session[555468]: gnome-session-binary[555468]: WARNING: App 'org.gnome.SettingsDaemon.Wacom.desktop' exited with code 1
Jul 22 14:22:34 megatron gnome-session-binary[555468]: WARNING: App 'org.gnome.SettingsDaemon.Wacom.desktop' exited with code 1
Jul 22 14:22:34 megatron gnome-session-binary[555468]: WARNING: App 'org.gnome.SettingsDaemon.Keyboard.desktop' exited with code 1
Jul 22 14:22:34 megatron gnome-session[555468]: gnome-session-binary[555468]: WARNING: App 'org.gnome.SettingsDaemon.Keyboard.desktop' exited with code 1
Jul 22 14:22:34 megatron gnome-session-binary[555468]: WARNING: App 'org.gnome.Shell.desktop' exited with code 1
Jul 22 14:22:34 megatron gnome-session[555468]: gnome-session-binary[555468]: WARNING: App 'org.gnome.Shell.desktop' exited with code 1
Jul 22 14:22:34 megatron gnome-shell[555777]: Failed to create backend: Unable to open display '127.0.0.1:1'
Jul 22 14:22:34 megatron org.gnome.SettingsDaemon.MediaKeys.desktop[555774]: Unable to init server: Could not connect: Connection refused
Jul 22 14:22:34 megatron org.gnome.SettingsDaemon.MediaKeys.desktop[555774]: Cannot open display:
...
На стороне клиента (OSX) я вижу просто диалог, говорящий, что не удается подключиться. Как мне с этим справиться?
Что ж, мой ответ немного запоздал, но я надеюсь, что он будет полезным. У меня была такая же проблема с Ubuntu 22.04, и я потратил два дня на поиск решения.
Попробуйте следующее:
-
Установите TigerVNC, т.е. tigervnc-standalone-server на сервере.
-
Следуйте руководству по настройке сервера, например,
https://docs.01.org/clearlinux/latest/guides/network/vnc.html
Смотрите “Метод 3: Многопользовательские входы с аутентификацией через GDM”
Краткие детали:
a) Создайте файл сокета systemd /etc/systemd/system/xvnc.socket со следующим содержимым:[Unit] Description=XVNC Server on port 5900 [Socket] ListenStream=5900 Accept=yes [Install] WantedBy=sockets.target
b) Создайте файл сервиса systemd /etc/systemd/system/[email protected] со следующим содержимым:
[Unit] Description=Daemon for each XVNC connection [Service] ExecStart=-/usr/bin/Xvnc -inetd -query localhost -geometry 1920x1200 -once -SecurityTypes=None User=nobody StandardInput=socket
c) В файле /etc/gdm3/custom.conf установите:
[xdmcp] Enable=true Port=177
d) Запустите VNC сокет скрипт и настройте его на автоматический старт при загрузке.
sudo systemctl daemon-reload sudo systemctl enable xvnc.socket sudo systemctl start xvnc.socket
e) Проверьте. Если вы выполните команду
systemctl | grep vnc
вы должны увидеть, по крайней мере:
xvnc.socket loaded active listening XVNC Server on port 5900
-
В файле /etc/gdm3/custom.conf раскомментируйте строку:
WaylandEnable=false
Это решает проблему с черным экраном сразу после подключения.
-
Редактировать:
В файле /etc/gdm3/custom.conf в разделе [xdmcp] добавьте:DisplaysPerHost=5
Где 5 – это пример вашего максимального количества разрешенных VNC подключений.
Это решает проблему “read (104: Connection reset by peer)” для большего числа подключений.
-
В файле /etc/tigervnc/vncserver-config-defaults найдите параметр $session и установите:
$session = ubuntu
(для возможных значений сессий смотрите в папке /usr/share/xsessions, используйте имена без суффикса .desktop)
Это решает проблему с черным экраном после экрана входа в систему.
-
Попробуйте подключиться с клиента к <server-ip>:5900.
Ответ или решение
Настройка TigerVNC на Ubuntu 20.04 с использованием systemd может быть довольно сложной задачей, особенно если необходимо обеспечить доступ для нескольких пользователей с аутентификацией по имени пользователя и паролю. Давайте разберём подробно, как это сделать.
Настройка VNC-сервера TigerVNC на Ubuntu 20.04
1. Установка TigerVNC
Чтобы начать, установите TigerVNC с помощью следующей команды:
sudo apt update
sudo apt install tigervnc-standalone-server
2. Настройка systemd для TigerVNC
Создание сокета systemd
Создайте файл сокета /etc/systemd/system/xvnc.socket
с содержимым:
[Unit]
Description=XVNC Server on port 5900
[Socket]
ListenStream=5900
Accept=yes
[Install]
WantedBy=sockets.target
Создание сервиса systemd
Создайте файл сервиса /etc/systemd/system/[email protected]
со следующим содержимым:
[Unit]
Description=Daemon for each XVNC connection
[Service]
ExecStart=-/usr/bin/Xvnc -inetd -query localhost -geometry 1920x1200 -once -SecurityTypes=None
User=nobody
StandardInput=socket
Настройка GDM для поддержки XDMCP
Отредактируйте файл /etc/gdm3/custom.conf
и включите XDMCP:
[xdmcp]
Enable=true
Port=177
Запустите и активируйте сокет VNC:
sudo systemctl daemon-reload
sudo systemctl enable xvnc.socket
sudo systemctl start xvnc.socket
Проверка статуса сервиса:
systemctl | grep vnc
Вы должны увидеть строку, подобную этой:
xvnc.socket loaded active listening XVNC Server on port 5900
3. Настройки для разрешения экранных проблем
-
В файле
/etc/gdm3/custom.conf
раскомментируйте строку:WaylandEnable=false
Это устраняет проблемы с чёрным экраном после подключения.
-
Добавьте в секцию
[xdmcp]
:DisplaysPerHost=5
Это решает проблему "read (104: Connection reset by peer)" при увеличении числа подключений пользователей.
-
Настройка сессии для TigerVNC:
В файле/etc/tigervnc/vncserver-config-defaults
найдите параметр$session
и установите его значение:$session = ubuntu
Это поможет устранить проблемы с пустым экраном после входа.
4. Подключение к серверу
Теперь вы можете подключиться с вашего VNC-клиента на IP-адрес сервера по порту 5900.
Следуя этим инструкциям, ваша установка TigerVNC на Ubuntu 20.04 должна функционировать корректно, обеспечивая многопользовательский доступ с аутентификацией по имени пользователя и паролю через systemd. Убедитесь, что вы следили за всеми шагами точно и проверили конфигурационные файлы, чтобы избежать распространённых ошибок.