Bug 51505

Summary: Не работает подключение к пользовательской сессии
Product: Sisyphus Reporter: NzN <golovkoan>
Component: xrdpAssignee: Andrey Cherepanov <cas>
Status: REOPENED --- QA Contact: qa-sisyphus
Severity: critical    
Priority: P5 CC: belayaav, dgurev, lakostis, lav, pashininaaa, shevchenkodyu
Version: unstable   
Hardware: x86_64   
OS: Linux   
Attachments:
Description Flags
/etc/xrdp/xrdp.ini
none
/etc/xrdp/sesman.ini none

Description NzN 2024-09-20 06:35:37 MSK
Пакет xrdp 0.10.1. П
Проверялся для дистрибутивов P10, C9F2
1. При подключении к пользовательской сессии(используется библиотека libvnc.so) отображается черный экран с указателем мыши в виде точки. Обрыв сессии происходит через несколько секунд.
2. Элементы логон-окна выбора типа сессии(Новая/Пользовательская), имени пользователя и пароля на удалённой машине не доступны для управления мышью. Лого выходит за рамки окна.

Часть xrdp.ini для подключения к пользовательской сессии:
[Xvnc]
name=Пользовательская сессия  
lib=libvnc.so
pamusername=ask
pampassword=ask
pamsessionmng=127.0.0.1
ip=127.0.0.1
port=5900
code=20
cliprdr=true
rdpdr=true
chansrvport=DISPLAY(0)
#disabled_encodings_mask=0
Comment 1 Белая Алёна 2024-09-23 13:01:04 MSK
Добрый день!

Для проверки использовала стенд Alt Workstation 10.2 x86_64. 

Не смогла воспроизвести ошибки в Sisyphus и Р10. Подключение производится успешно.

Версии пакетов:
Sisyphus:
xrdp-0.10.1-alt1.x86_64
remmina-1.4.35-alt2.x86_64
xfreerdp-2.11.7-alt3.x86_64

P10:
xrdp-0.10.1-alt0.p10.1.x86_64
remmina-1.4.35-alt0.p10.1.x86_64
xfreerdp-2.11.7-alt3.x86_64

Remmina и xfreerdp использовались в качестве клиентов для подключения. 

Укажите, пожалуйста, следующее:
1. Какие дистрибутивы использовались для подключения? На каком дистрибутиве развернут xrdp-сервер?

1. Можете ли показать лог /var/log/xrdp.log? 
По каким шагам настраивался сервер vnc?

2. Какой клиент используется для подключения?
Можете показать /etc/xrdp/sesman.ini? 
Также параметр "pamsessionmng" не указан в man и при этом влияет на отображение гритера. Поможет ли, если закомментировать данный параметр, перезапустить xrdp и xrdp-sesman и переподключиться?
Comment 2 NzN 2024-09-24 07:16:19 MSK
День добрый!
На АРМ, к которым подключались, установлены

P10:
xrdp-0.10.1-alt0.p10.1.x86_64
xorg-drv-xrdp-0.10.1-alt0.p10.1
remmina-1.4.35-alt0.p10.1.x86_64
xfreerdp-2.11.7-alt3.x86_64

C9F2:
xrdp-0.10.1-alt0.p10.1.x86_64
xorg-drv-xrdp-0.10.1-alt0.p10.1
remmina-1.3.7-alt1.x86_64
xfreerdp-2.11.6-alt1.x86_64


MSTSC, Remmina и xfreerdp использовались в качестве клиентов для подключения.

Использование VNC настраивалось в xrdp.ini в секции [Xvnc]

Комментирование параметра pamsessionmng ситуацию не изменяет.

На итог
При подключении в Новый сеанс — успешно
При подключении в Пользовательский сеанс — подключение происходит, но со стороны подключающегося пустой экран, на удалённом АРМ видны попытки подключающегося двигать/щелкать мышкой.

При откате xrdp на версию 0.9.23.1 — всё успешно


(Ответ для Белая Алёна на комментарий #1)
Comment 3 Дмитрий Гурьев 2024-09-24 07:34:11 MSK
Created attachment 16891 [details]
/etc/xrdp/xrdp.ini
Comment 4 Дмитрий Гурьев 2024-09-24 07:34:41 MSK
Created attachment 16892 [details]
/etc/xrdp/sesman.ini
Comment 5 Дмитрий Гурьев 2024-09-24 10:03:27 MSK
Добрый день! Воспроизвелась ошибка при подключении при настройке параметров xrdp (xrdp.ini, sesman.ini уже отправились отдельно)
Также настроено подключение при  помощи vino
В настройках dconf были установлены (заданы параметры или включены функции) следующие параметры:
в /org/gnome/desktop/remote-access
alterrnative-port '5900'
enabled
icon-visibility 'always'
network-interface '127.0.0.1'
notify-on-connect
prompt-enabled
 остальные параметры выключены

Также изначально задавались параметры в консоли (потом уже были приведены к тому, что указано выше):
gsettings set org.gnome.Vino network-interface 'lo'
gsettings set org.gnome.Vino require-encryption 'false'
gsettings set org.gnome.Vino notify-on-connect 'true'
gsettings set org.gnome.Vino enabled 'true'
Comment 6 Белая Алёна 2024-09-24 11:21:17 MSK
Полагаю, что "Новый сеанс" - это Xorg-сессия, а "Пользовательский сеанс" - Xvnc-сессия. Т.е. проблема возникает при подключении к VNC. 

Судя по логам, VNC-соединение устанавливается корректно, проблемы начинаются при попытке подключиться к дисплею:
[ERROR] xrdp_mm_chansrv_connect: error in trans_connect chan
[ERROR] resize_server_to_client_layout: Asked to resize server, but not possible
[INFO ] Login screen monitor height is 1080 pixels over 296 mm (92 DPI)

В sesman.ini у вас указан параметр dpi, поможет ли, если закомментировать строки:
"param=-dpi
param=96"
?

После этого нужно перезапустить сервисы xrdp и xrdp-sesman:
#  systemctl restart xrdp xrdp-sesman

и переподключиться к удаленной машине.
Comment 7 NzN 2024-09-24 11:46:44 MSK
(Ответ для Белая Алёна на комментарий #6)
> Полагаю, что "Новый сеанс" - это Xorg-сессия, а "Пользовательский сеанс" -
> Xvnc-сессия. Т.е. проблема возникает при подключении к VNC. 
> 
> Судя по логам, VNC-соединение устанавливается корректно, проблемы начинаются
> при попытке подключиться к дисплею:
> [ERROR] xrdp_mm_chansrv_connect: error in trans_connect chan
> [ERROR] resize_server_to_client_layout: Asked to resize server, but not
> possible
> [INFO ] Login screen monitor height is 1080 pixels over 296 mm (92 DPI)
> 
> В sesman.ini у вас указан параметр dpi, поможет ли, если закомментировать
> строки:
> "param=-dpi
> param=96"
> ?
> 
> После этого нужно перезапустить сервисы xrdp и xrdp-sesman:
> #  systemctl restart xrdp xrdp-sesman
> 
> и переподключиться к удаленной машине.

Выполнил. Без изменений.
Comment 8 Белая Алёна 2024-09-24 12:32:12 MSK
Проверила по шагам:

1. Настроила и запустила vnc-сервер 
# apt-get install tigervnc-server  xorg-extension-vnc 
# subst 's/^#//' /etc/X11/xorg.conf.d/vnc.conf
# vncpasswd
# reboot
2. Настроила и запустила сервер xrdp:
# apt-get install xorg-drv-xrdp xrdp
# usermod -aG tsusers user && usermod -aG tsadmins user 
Раскомментировала и добавила параметры в блок [Xvnc] в /etc/xrdp/xrdp.ini:
[Xvnc]
name=Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=5900
code=20
cliprdr=true
rdpdr=true
chansrvport=DISPLAY(0)
# systemctl enable --now xrdp xrdp-sesman && sleep 5; systemctl status xrdp xrdp-sesman
# reboot
3. Установила клиента xrdp на другой машине:
# apt-get install xfreerdp remmina remmina-plugins
4. Подключилась к серверу xrdp c помощью xrfeerdp:
# xfreerdp /v:<ip-addr>

При подключении выбрала сессию Xvnc и ввела пароль, заданный при команде vncpasswd. Подключение проходит успешно, дисплей отображается корректно, проблем не наблюдаю. 
Проверено для версии xrdp-0.10.1-alt0.p10.1. и для версии xrdp-0.9.21.1-alt2. 
Поведение одинаковое.
Comment 9 NzN 2024-09-25 05:32:09 MSK
Параметры меняли, результат тот же.

vnc используется для подключения к сеансу доменного пользователя для оказания тех.поддержки.
Для этого используется следующий стэк:

xrdp
vino-mate с настройками, описанными в комментарии 5 Дмитрием Гурьевым

Используется доменная авторизация администратора для подключения к существующему сеансу с запросом на разрешение подключения.

После обновления пакета xrdp сначала обратили внимание 
1 на нарушение функционирования элементов логон-окна(лого выходит за границы, не функционирует перемещение мышью по элементам ввода). Решилось редактированием конфига.
2 После подключения вместо удаленного рабочего стола виден либо черный, либо бирюзовый экран. При этом на удалённой машине управление клавиатурой и мышью есть, но бесполезно.

Использование других  решений, особенно с с предопределённым vncpassword не приемлемо с точки зрения безопасности и сложности распространения решения(тысячи территориально и административно распределённых хостов)

При установке старых пакетов xrdp 0.9.23.1 проблемы уходят

(Ответ для Белая Алёна на комментарий #8)
Comment 10 Белая Алёна 2024-09-26 13:06:12 MSK
Стенды
Alt Workstation 10.2 x86_64 - сервер 
Alt Workstation 10.2 x86_64 - клиент

Версии пакетов:
xrdp-0.10.1-alt1.x86_64
xorg-drv-xrdp-0.10.1-alt1.x86_64

Шаги воспроизведения:
1. Настроить xrdp и vnc на машине, к которой будет производиться подключение:

vnc:
Открыть dconf-editor ($ dconf-editor), зайти по пути /org/gnome/desktop/remote-access и установить следующие параметры:
alternative-port '5900'
включить чекбокс "enabled"
проверить, что включены чекбоксы notify-on-connect, prompt-enabled

xrdp:
Настроить сервер:
# apt-get install xorg-drv-xrdp xrdp 
Раскомментировать и отредактировать сессию Xvnc в /eetc/xrdp/xrdp.ini
[Xvnc]
name=Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=5900
chansrvport=DISPLAY(0)
Сохранить.
Добавить пользователя в группы и запустить сервер:
# usermod -aG tsusers user && usermod -aG tsadmins user && id user
# systemctl enable --now xrdp xrdp-sesman && sleep 5; systemctl status xrdp xrdp-sesman

Изменить разрешение экрана, чтобы оно не было равно 1024x768

2. На клиенте установить xfreerdp:
# apt-get install xfreerdp

Подключиться к серверу xrdp:
$ xfreerdp /v:<ip сервера>
В появившемся окне входа выбрать "Session: Xvnc", ввести логин и пароль пользователя, который добавлялся в группы tsusers и tsadmins. 

Результат: Вместо удаленного рабочего стола виден либо черный, либо бирюзовый экран, на удаленной машине отслеживаются движения мыши с клиента. Время от времени рабочий стол поначалу отображается, но картинка сразу же "зависает", действия, выполеннные на удаленной машине, не отображаются у клиента.
В логах указывается, что провалились попытки изменить разрешение экрана:
[2024-09-26T12:46:04.223+0300] [INFO ] xrdp_wm_log_msg: Connecting to session
[2024-09-26T12:46:04.230+0300] [INFO ] loaded module 'libvnc.so' ok, interface size 4832, version 4
[2024-09-26T12:46:04.253+0300] [INFO ] VNC: Clipboard (if available) is provided by chansrv facility
[2024-09-26T12:46:04.259+0300] [INFO ] xrdp_wm_log_msg: Connecting to chansrv
[2024-09-26T12:46:14.272+0300] [ERROR] xrdp_mm_chansrv_connect: error in trans_connect chan
[2024-09-26T12:46:14.297+0300] [ERROR] resize_server_to_client_layout: Asked to resize server, but not possible
[2024-09-26T12:46:14.303+0300] [INFO ] dynamic_monitor_process_queue: Clearing failed request to resize to: (w: 1152 x h: 768)
[2024-09-26T12:46:18.212+0300] [ERROR] xrdp_iso_send: trans_write_copy_s failed
[2024-09-26T12:46:18.245+0300] [ERROR] Sending [ITU T.125] DisconnectProviderUltimatum failed

Ожидаемый результат: Успешное изменение разрешения экрана и подключение к серверу xrdp, удаленный рабочий стол виден, отображается происходящее на удаленной машине. 

Дополнительно: проблема отсутствует в версии xrdp-0.9.24-alt1, разрешение окна удаленного доступа на клиенте подстраивается под разрешение сервера xrdp. 
В версии 0.10.0-alt1 проблема уже присутствует.
Проблема также воспроизводится при попытке подключиться к xrdp-серверу с помощью удаленного рабочего стола Windows.
Comment 11 Белая Алёна 2024-09-26 13:20:49 MSK
Примечание к предыдущему комментарию - при подключении к серверу xrdp(шаг 2 - "Подключиться к серверу xrdp"), после ввода логина и пароля пользователя, на удаленной машине появится уведомление "Другой пользователь пытается подключиться к вашему рабочему столу"
Нужно нажать на кнопку "Принять", иначе соединение будет разорвано.
Comment 12 Andrey Cherepanov 2024-11-15 13:54:27 MSK
(Ответ для Белая Алёна на комментарий #6)
> Полагаю, что "Новый сеанс" - это Xorg-сессия, а "Пользовательский сеанс" -
> Xvnc-сессия. Т.е. проблема возникает при подключении к VNC. 
> 
> Судя по логам, VNC-соединение устанавливается корректно, проблемы начинаются
> при попытке подключиться к дисплею:
> [ERROR] xrdp_mm_chansrv_connect: error in trans_connect chan
> [ERROR] resize_server_to_client_layout: Asked to resize server, but not
> possible
> [INFO ] Login screen monitor height is 1080 pixels over 296 mm (92 DPI)
> 
> В sesman.ini у вас указан параметр dpi, поможет ли, если закомментировать
> строки:
> "param=-dpi
> param=96"
> ?
> 
> После этого нужно перезапустить сервисы xrdp и xrdp-sesman:
> #  systemctl restart xrdp xrdp-sesman
> 
> и переподключиться к удаленной машине.

https://github.com/neutrinolabs/xrdp/issues/3288
Comment 13 Andrey Cherepanov 2024-11-15 13:56:24 MSK
https://github.com/neutrinolabs/xrdp/issues/3008