Linux Mint xrdp xfce: X сервер уже запущен на экране :10.0

Вопрос или проблема

Я использую Linux Mint 21, версию xfce.

Установил xrdp с помощью базовой команды:

apt install xrdp

Настроил файл /etc/xrdp/startvm.sh следующим образом:

#/bin/sh
startxfce4 >> ~/xrdp.log

Когда я подключаюсь через RDP-клиент, я получаю экран xrdp Just Connecting login.

Я выбираю Xorg, затем ввожу имя пользователя и пароль. Однако, когда отправляю форму входа, соединение прерывается неожиданно.

Ничего особенного в /var/log/xrdp.log или /var/log/xrdp-ses.log нет.

Файл ~/xrdp.log указывает:

/usr/bin/startxfce4: X сервер уже запущен на дисплее :10.0
/usr/bin/startxfce4: X сервер уже запущен на дисплее :10.0
/usr/bin/startxfce4: X сервер уже запущен на дисплее :10.0
/usr/bin/startxfce4: X сервер уже запущен на дисплее :10.0
...

Файл /var/log/xrdp-sesman.log указывает:

20220821-23:43:13] [INFO ] ++ создана сессия (доступ разрешен): имя пользователя myuser, ip x.x.x.x:31947 - сокет: 12
[20220821-23:43:13] [INFO ] запуск сессии Xorg...
[20220821-23:43:13] [INFO ] Запуск сессии: session_pid 23543, дисплей :10.0, ширина 1920, высота 1080, bpp 24, ip клиента x.x.x.x:31947 - сокет: 12, имя пользователя myuser
[20220821-23:43:13] [INFO ] [начало сессии] (дисплей 10): вызов auth_start_session из pid 23543
[20220821-23:43:13] [ERROR] sesman_data_in: scp_process_msg не выполнен
[20220821-23:43:13] [ERROR] sesman_main_loop: trans_check_wait_objs не выполнен, удаление trans
[20220821-23:43:13] [INFO ] Запуск X сервера на дисплее 10: /usr/lib/xorg/Xorg :10 -auth .Xauthority -config xrdp/xorg.conf -noreset -nolisten tcp -logfile .xorgxrdp.%s.log  
[20220821-23:43:13] [INFO ] Найден X сервер, работающий в /tmp/.X11-unix/X10
[20220821-23:43:13] [INFO ] Найден X сервер, работающий в /tmp/.X11-unix/X10
[20220821-23:43:13] [INFO ] Сессия успешно началась для пользователя myuser на дисплее 10
[20220821-23:43:13] [INFO ] Запуск xrdp сервер-канала для дисплея 10
[20220821-23:43:13] [INFO ] Найден X сервер, работающий в /tmp/.X11-unix/X10
[20220821-23:43:13] [INFO ] Запуск менеджера окон по умолчанию на дисплее 10: /etc/xrdp/startwm.sh
[20220821-23:43:13] [INFO ] Сессия в процессе на дисплее 10, ожидание завершения менеджера окон (pid 23544), чтобы завершить сессию
[20220821-23:43:14] [WARN ] Менеджер окон (pid 23544, дисплей 10) завершил работу с ненулевым кодом выхода 139 и сигналом 0. Это может указывать на проблему с конфигурацией менеджера окон
[20220821-23:43:14] [WARN ] Менеджер окон (pid 23544, дисплей 10) завершил работу быстро (1 секунда). Это может указывать на проблему с конфигурацией менеджера окон
[20220821-23:43:14] [INFO ] Вызов auth_stop_session и auth_end из pid 23543
[20220821-23:43:14] [INFO ] Завершение X сервер (pid 23545) на дисплее 10
[20220821-23:43:14] [INFO ] Завершение xrdp сервер-канала (pid 23553) на дисплее 10
[20220821-23:43:14] [INFO ] X сервер на дисплее 10 (pid 23545) вернул код выхода 0 и номер сигнала 0
[20220821-23:43:14] [INFO ] xrdp сервер-канала для дисплея 10 (pid 23553) код выхода 0 и номер сигнала 0
[20220821-23:43:14] [INFO ] cleanup_sockets:
[20220821-23:43:14] [INFO ] ++ завершена сессия: имя пользователя myuser, дисплей :10.0, session_pid 23543, ip x.x.x.x:31947 - сокет: 12 

Как дальше отлаживать?

Мой пользователь уже был подключен через Proxmox VNC, поэтому мне нужно было отключить пользователя, а затем сессия заработала с другим RDP клиентом.

У меня была проблема на Debian, но я хотел иметь возможность запускаться одновременно с тем же пользователем локально и удаленно.

Я следовал этому блогу https://c-nergy.be/blog/?p=16698 (второй метод) и это сработало.

  1. Установите dbus-x11 для dbus-launch, если не установлен.

  2. Отредактируйте /etc/xrdp/startwm.sh и добавьте

    export $(dbus-launch)

Моя версия /etc/xrdp/startwm.sh теперь:

#!/bin/sh
# xrdp X скрипт начала сессии (c) 2015, 2017, 2021 mirabilos
# опубликован в соответствии с лицензией MirOS

# Полагаться на /etc/pam.d/xrdp-sesman, использующий pam_env для загрузки
# /etc/environment и /etc/default/locale для инициализации
# локали и окружения пользователя.

if test -r /etc/profile; then
    . /etc/profile
fi

if test -r ~/.profile; then
    . ~/.profile
fi

export $(dbus-launch)
test -x /etc/X11/Xsession && exec /etc/X11/Xsession
exec /bin/sh /etc/X11/Xsession

.

Ответ или решение

В ситуации, описанной пользователем, возникает проблема с RDP-соединением на Linux Mint 21 с использованием среды рабочего стола XFCE и пакета xrdp. Ошибка, с которой сталкивается пользователь, связана с уже запущенным X сервером на дисплее :10.0, что вызывает неожиданное завершение сессии. Для решения этой проблемы предоставляется несколько возможных способов, которые стоит рассмотреть и протестировать для устранения неполадки.

Теория

На системах Linux с использованием xrdp для удаленного доступа к рабочему столу часто возникают проблемы из-за конфликта дисплеев и уже запущенных сеансов. Основной причиной текущей ситуации является то, что xrdp, который пытается запустить новый X-сервер и сеанс XFCE для удаленного соединения, сталкивается с уже активным сеансом на том же дисплее или некорректно настроенными параметрами запуска сеанса.

Пример

На основе предоставленных логов можно выделить несколько ключевых моментов:

  • Логи указывают, что X-сервер уже запущен на дисплее :10.0.
  • Вывод журнала xrdp-сессий свидетельствует о проблеме с конфигурацией управления окнами, что приводит к быстрому завершению процесса.

Приложение

Вот шаги, которые можно предпринять для решения проблемы:

  1. Убедитесь, что dbus-x11 установлен. Это как раз то, что указано в блоге, на который ссылается пользователь:

    sudo apt install dbus-x11
  2. Измените файл /etc/xrdp/startwm.sh. Добавление строки export $(dbus-launch) помогает в настройке необходимых сеансовых служб для пользователей. Это исправление позволяет xrdp корректно инициализировать необходимые контексты:

    #!/bin/sh
    if test -r /etc/profile; then
       . /etc/profile
    fi
    
    if test -r ~/.profile; then
       . ~/.profile
    fi
    
    export $(dbus-launch)
    test -x /etc/X11/Xsession && exec /etc/X11/Xsession
    exec /bin/sh /etc/X11/Xsession
  3. Разрыв активных сеансов. Когда пользователь подключен через VNC с использованием того же пользователя и пытается открыть RDP-соединение на том же дисплее, это приводит к конфликту. В этом случае необходимо завершить VNC сеанс перед установкой нового RDP-соединения.

  4. Инициализация нового дисплея для RDP. Если проблема продолжается, можно попытаться указать в конфигурациях xrdp использование другого дисплея (например, :11 или :12), чтобы избежать пересечения с текущими X-серверами.

  5. Проверка и редактирование конфигураций X-сервера xrdp и XFCE. Возможно, требуется дополнительная настройка параметров запуска XFCE или других конфигураций, связанных с xrdp. Например, это может быть изменение xrdp.ini или других связанных с XFCE файлов конфигурации.

  6. Логи и сторонние утилиты. При необходимости можно использовать дополнительные утилиты для мониторинга запуска xfce4 и xrdp, такие как strace или gdb, которые помогут понять, где точно происходит ошибка.

Кроме технических шагов, важно следить за обновлениями как xrdp, так и использующихся окружений рабочего стола, так как такие проблемы иногда решаются разработчиками в новых версиях. Проблемы с RDP-соединениями нередко возникают из-за конфликтов в сеансах и неправильной инициализации компонентов, что можно разрешить при помощи тщательной настройки и отладки существующих конфигураций. Надеюсь, эти рекомендации помогут устранить указанную проблему и настроить стабильное и надежное подключение через xrdp на вашей системе.

Оцените материал
Добавить комментарий

Капча загружается...