Страница 1 из 1

Не могу настроить VNC сервер

Добавлено: 24 июн 2023, 08:38
Mikhail41
Доброго времени суток! Прошу подсказать, возможно ли вообще на данный момент на Rosa Fresh настроить нормально работающий VNC сервер, как службу? Vino запускается только из под текущего пользователя, когда он уже вошел в систему, любые попытки настроить, как службу, выдают ошибки, с x11vnc такая же беда. Tigervnc запускается, как служба, но тоже в процессе работы идут ошибки, видимо приводящие к тому, что клиента выбрасывает максимум через минуту после подключения, а через минут 10 сам VNC падает. В других линуксах таких проблем не было. Может я что не так делаю, но всевозможные источники информации по настройке не помогают.

Не могу настроить VNC сервер

Добавлено: 24 июн 2023, 11:39
nickm
Эту тему читали?

Там описано 2 варианта - через правку конфига дисплейного менеджера и через юнит systemd.

Первый вариант рабочий, второй не проверял:
Изображение

Не могу настроить VNC сервер

Добавлено: 24 июн 2023, 13:22
Mikhail41
Я так понял, для конкретных DM настройка возможна, но не для всех. А так, перепробовал кучу настроек и ман перечитал, в любом случае выдает XOpenDisplay failed, и не важно :0 :1 :2.

Не могу настроить VNC сервер

Добавлено: 24 июн 2023, 13:39
nickm
Mikhail41 писал(а): 24 июн 2023, 13:22 Я так понял, для конкретных DM настройка возможна, но не для всех.
Каждая DM специфичная, поэтому и настройки разные и для каждой может потребоваться свой подход.

У Вас какой DM?

Если "SDDM", чем не устраивает правка конфигов?

Не могу настроить VNC сервер

Добавлено: 24 июн 2023, 13:54
Mikhail41
lxqt и xfce

Не могу настроить VNC сервер

Добавлено: 24 июн 2023, 14:04
nickm
Mikhail41 писал(а): 24 июн 2023, 13:54lxqt и xfce
Хмм, понятно.

Таких "РОС" в работе не встречал, но на досуге пощупаю.

Не могу настроить VNC сервер

Добавлено: 26 июн 2023, 08:15
nickm
nickm писал(а): 24 июн 2023, 13:39У Вас какой DM?
DM= Display Manager;
Mikhail41 писал(а): 24 июн 2023, 13:54lxqt и xfce
DE= Desktop Environment;

DM<>DE;

В перечисленных DE в качестве DM выступает GDM, в принципе он и в "KDE PLASMA" является DM "по умолчанию".
Mikhail41 писал(а): 24 июн 2023, 08:38 но всевозможные источники информации по настройке не помогают.
В таком случае, как и говорилось выше, при ознакомлении с указанной темой, можно было бы увидеть рекомендацию ознакомиться со статьёю wiki "ArchLinux", где заботливо перечислены способы получения токенов авторизаций различных DM.

Ознакомьтесь со статьёю и попробуйте использовать рекомендации при подключении, и если что-то у вас не заработает, то покажите ошибки.
Полагаю с помощью подсказок от сообщества Мы сможем разрешить Ваш насущный вопрос.

Перед запуском unit-сервиса тестируйте работу x11vnc с заданными параметрами из командной строки и/ или пишите запуск сервиса в лог, что поможет Вам отловить ошибки.

Не могу настроить VNC сервер

Добавлено: 26 июн 2023, 14:14
nickm
Вот, DE= LXQt, DM= GDM, работает в качестве unit-сервиса и на экране логина:
Изображение
Само решение для GDM можно подсмотреть здесь (для "ROSA Linux" его следует чуть-чуть подправить).

Если решение покажется сложным, тогда, как вариант, менять DM на установленных системах.

Не могу настроить VNC сервер

Добавлено: 26 июн 2023, 16:27
Mikhail41
Если запускать x11vnc из терминала (с правами рут конечно), то всё прекрасно запускается и работает и через ручной запуск и через systemd unit, но при старте системы в лог выдаёт XOpenDisplay failed. Получается, что система пытается запустить x11vnc до старта иксов и как это поправить, я пока не знаю. Пробовал настройки с Ваших ссылок, результат один.

Не могу настроить VNC сервер

Добавлено: 26 июн 2023, 17:50
MikiLinux
Mikhail41 писал(а): 26 июн 2023, 16:27 Если запускать x11vnc из терминала (с правами рут конечно), то всё прекрасно запускается и работает и через ручной запуск и через systemd unit, но при старте системы в лог выдаёт XOpenDisplay failed. Получается, что система пытается запустить x11vnc до старта иксов и как это поправить, я пока не знаю. Пробовал настройки с Ваших ссылок, результат один.
What is the output of the command you give?
e.g. if you give a command

Код: Выделить всё

x11vnc -display :0
what's the output after press Enter?
You can write answer in Russian language, I will help with the Yandex translator. :)

########################
Italiano
Qual è l'output del comando che dai? Ad esempio se dai il comando:

Код: Выделить всё

x11vnc -display :0
che cosa ti viene restituito dopo che premi Invio?
Puoi scrivere la risposta in russo, io mi aiuto con il traduttore.

Не могу настроить VNC сервер

Добавлено: 26 июн 2023, 18:27
nickm
Mikhail41 писал(а): 26 июн 2023, 16:27 и как это поправить, я пока не знаю. Пробовал настройки с Ваших ссылок, результат один.
Можете показать, что Вы пробовали и чего достигли на данный момент?

Вы последнюю предложенную статью читали, про наличие двух unit-сервиса обратили внимание?
Почему требуется именно такая реализация стало понятно?

Не могу настроить VNC сервер

Добавлено: 26 июн 2023, 19:31
Mikhail41
Один юнит такой:

Код: Выделить всё

[Unit]
Description=VNC Server (testuser)
After=graphical.target

[Service]
User=admin23
ExecStartPre=sh -c 'while ! pgrep -U testuser Xorg; do sleep 2; done'
ExecStartPre=+systemctl stop vnc-gdm.service
ExecStart=x11vnc -many -shared -display :1 -auth /home/testuser/.Xauthority -rfbauth /home/testuser/.vnc/passwd
Restart=on-failure
RestartSec=3

[Install]
WantedBy=graphical.target
Он запускается, только когда происходит авторизация пользователя, при выходе из аккаунта, он выключается и доступ пропадает, а мне нужно, чтобы доступ был и до логина.

Второй юнит:

Код: Выделить всё

[Unit]
Description=VNC Server (gdm)
After=graphical.target

[Service]
ExecStart=bash -c 'x11vnc -auth /run/user/500/gdm/Xauthority -display :1 -nopw -o /home/testuser/x11vnc.log'
Restart=on-failure
RestartSec=3

[Install]
WantedBy=graphical.target
Он тоже запускается, но не на что не влияет и не понятно для чего если честно. Если вставить вместо 500 id пользователя gdm, то юнит не стартует, но и папки соответствующей в каталоге нет.

Не могу настроить VNC сервер

Добавлено: 26 июн 2023, 19:54
nickm
Вот этот юнит будет работать на экране пользователей:

Код: Выделить всё

cat /lib/systemd/system/vnc-gdm.service 
[Unit]
Description=VNC Server (gdm)
After=graphical.target

[Service]
ExecStart=/bin/bash -c "/usr/bin/x11vnc -auth /run/user/$(id -u gdm)/gdm/Xauthority -display :0 -rfbauth /etc/x11vnc.pass -o /var/log/x11vnc.log"
Restart=on-failure
RestartSec=3

[Install]
WantedBy=graphical.target
Здесь стоит обратить внимание и понимать, что до логина токены авторизаций у пользователей отсутствуют, но есть авторизация самого GDM, которую можно получить указанным способом.

После авторизации пользователей авторизация GDM уничтожается (в этом Вы можете убедиться открыв соседнюю консоль до авторизации и исследовать директорию /run/user/).

Также обратите внимание на путь к паролю и логу x11vnc - они системные, при необходимости задайте и/ или укажите Свои пути.

В конечном итоге Вам останется разобраться с порядком запуска сервисов, когда один (системный) запускает "x11vnc" для "отлова" экрана логина, а последующий, после логона пользователя, завершает системный и запускает "x11vnc" в сеансе пользователя.

Если пользователь в системе ровно один, то это не представляется проблемой.

Если пользователей несколько, возможно, что придётся заморочиться.

Не могу настроить VNC сервер

Добавлено: 26 июн 2023, 20:33
Mikhail41
Спасибо, nickm, поправил юнит для gdm, теперь всё работает, конечно не совсем удобно с двойной авторизацией, но хоть так.

Не могу настроить VNC сервер

Добавлено: 26 июн 2023, 20:49
nickm
Mikhail41 писал(а): 26 июн 2023, 20:33 конечно не совсем удобно с двойной авторизацией, но хоть так.
nickm писал(а): 26 июн 2023, 14:14 Если решение покажется сложным, тогда, как вариант, менять DM на установленных системах.
Mikhail41 писал(а): 26 июн 2023, 20:33 поправил юнит для gdm, теперь всё работает,
Хорошо, если так, но!

Разлогин пользователя и Вы потеряете подключение - если требуется поддерживать подключение, то придётся городить огород.

Если пользователей несколько - то также придётся городить огород.

Следует понимать, что это ограничение DM, а не DE и дистрибутива.

С другой стороны, если всё грамотно "заскриптовать" - выработать рабочее решение, то в конечном случае количество сервисов не будет иметь значение.

Не могу настроить VNC сервер

Добавлено: 27 июн 2023, 11:54
Mikhail41
Я решил вопрос по-другому.
1. Устанавливаем tigervnc-server;
2. через vncpasswd от пользователя (без прав рут) задаем пароль, файлик появляется в стандартной директории /home/<USER>/.vnc
3. В той же директории создаём файл config и вносим параметры securitytypes=vncauth,tlsvnc и geometry=<удобное разрешение экрана>, файл можно также скопировать из директории /etc/tigervnc
4. В той же директории создаём файл xstartup со следующим содержимым:

Код: Выделить всё

#!/bin/bash
PATH=/usr/bin:/usr/sbin
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec <Ваш DE> &
Вместо <Ваш DE> должен быть указан исполнимый файл, запускающий X сессию:
  • Для XFCE: startxfce4
    Для GNOME: /usr/bin/gnome-session
    Для lxqt: startlxqt
Файл xstartup нужно сделать исполняемым (chmod +x xstartup)
5. В директории /etc/systemd/system создаем файл vncserver@.service со следующим содержимым:

Код: Выделить всё

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
WorkingDirectory=/home/<USER>
User=<USER>

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

Restart=on-success
RestartSec=3

[Install]
WantedBy=multi-user.target
P.S.: Для sddm и lightdm строка с параметром ExecStartPre не нужна!

5. перезагружаем демон systemctl daemon-reload, делаем автоматический запуск созданного юнита systemctl enable vncserver@:0
6. перезагружаем систему - должно работать уже на стадии авторизации.

И никаких двойных перелогинов и выход пользователя не влияет на работу юнита.

С x11vnc тоже разобрался, но наблюдаются глюки с клавиатурой и мышкой, в tigervnc их нет.