Xrdp: различия между версиями
Bne (обсуждение | вклад) Нет описания правки |
Bk (обсуждение | вклад) |
||
(не показано 12 промежуточных версий 6 участников) | |||
Строка 1: | Строка 1: | ||
= Первоначальная настройка сервера XRDP на сервере = | {{DISPLAYTITLE:xrdp}} | ||
== Первоначальная настройка сервера XRDP на сервере == | |||
* Установить пакет | * Установить пакет {{pkg|xrdp}}: | ||
*: <syntaxhighlight lang="bash"># apt-get install xrdp</syntaxhighlight> | |||
* Включить сервисы: | * Включить и добавить в автозапуск сервисы: | ||
*: <syntaxhighlight lang="bash"># systemctl enable --now xrdp xrdp-sesman</syntaxhighlight> | |||
Права доступа пользователя: | Права доступа пользователя: | ||
* Для доступа к терминальному сеансу — включить в группу '''tsusers''' | * Для доступа к терминальному сеансу — включить в группу '''tsusers''': | ||
*: <syntaxhighlight lang="bash"># gpasswd -a user tsusers</syntaxhighlight> | |||
* Для проброса папки — включить в группу '''fuse''' | * Для проброса папки — включить в группу '''fuse''': | ||
*: <syntaxhighlight lang="bash"># gpasswd -a user fuse</syntaxhighlight> | |||
==Настройки== | === Настройки === | ||
Настройки сервера хранятся в файле | Настройки сервера хранятся в файле {{path|/etc/xrdp/sesman.ini}}. Некоторые настройки сервера установленные по умолчанию: | ||
*'''AllowRootLogin'''=true — авторизация Root; | |||
*'''MaxLoginRetry'''=4 — максимальное количество попыток подключения; | |||
*'''TerminalServerUsers'''=tsusers — группа, в которую необходимо добавить пользователей для организации доступа к серверу; | |||
*'''MaxSessions'''=50 — максимальное количество подключений к серверу; | |||
*'''KillDisconnected'''=false — разрыв сеанса при отключении пользователя; | |||
*'''FuseMountName'''=Mount_FOLDER — название монтируемой папки. | |||
{{Note|Для поиска параметра можно воспользоваться поиском в текстовом редакторе.}} | |||
* | По умолчанию для подключения по RDP используется порт 3389. Номер порта можно изменить в файле {{path|/etc/xrdp/xrdp.ini}}. | ||
* | |||
* | == Подключение == | ||
* | Для подключения можно использовать FreeRDP — клиент для подключения к удаленному рабочему столу по протоколу RDP. | ||
Установить пакет {{pkg|xfreerdp}}: | |||
<syntaxhighlight lang="bash"># apt-get install xfreerdp</syntaxhighlight> | |||
Синтаксис: | |||
<syntaxhighlight lang="bash">xfreerdp [файл] [параметры] [/v:<сервер>[:порт]]</syntaxhighlight> | |||
Описание некоторых параметров: | |||
* /v:<сервер>[:порт] — IP-адрес или имя сервера; | |||
* /u:<пользователь> — имя пользователя; | |||
* /p:<пароль> — пароль пользователя; | |||
* /w:<ширина> — ширина окна; | |||
* /h:<высота> — высота окна; | |||
* /f — полноэкранный режим; | |||
* /size:<ширина>x<высота> — размер окна; | |||
* /drive:<название>,<путь> — подключение каталога. | |||
Пример: | Пример: | ||
<syntaxhighlight lang="bash">$ xfreerdp /drive:Epson,/home/cas/epson /v:10.4.129.129 /u:user /p:123</syntaxhighlight> | |||
где: | где: | ||
* ''Epson'' — название папки, которая будет показываться в каталоге ''thinclient_drives'' в домашней папке терминального пользователя, у локального пользователя пробрасывается папка ''/home/cas/epson''; | * ''Epson'' — название папки, которая будет показываться в каталоге ''thinclient_drives'' в домашней папке терминального пользователя, у локального пользователя пробрасывается папка ''/home/cas/epson''; | ||
Строка 31: | Строка 53: | ||
* ''123'' — пароль терминального пользователя. | * ''123'' — пароль терминального пользователя. | ||
Если пользователь или пароль не указаны, появится окно входа: | |||
[[Изображение:Xrdp-login-screen.png|Экран входа]] | |||
{{Attention|Избегайте одновременных сеансов RDP и обычных(локальных) для одного и того же пользователя. Systemd не позволит полноценно работать в сеансе RDP.}} | |||
Также для подключения можно использовать клиент [[Remmina]], [[Connector]] или [https://apps.kde.org/krdc/ Krdc]. | |||
{{Note| | {{Note|В случае проблем с подключением дисков необходимо в настройках подключения в локальных ресурсах отключать галочку «Принтеры».}} | ||
{{Note|Существует [https://github.com/neutrinolabs/xrdp/issues/1577 известная проблема] с тем, что на странице авторизации не реализовано переключение раскладки клавиатуры. Поэтому при подключении с клиента Linux в настройках клиента следует установить раскладку "'''00000409 - United States - English'''". | |||
= Дополнительно = | Клиент Windows не содержит настройку раскладки клавиатуры. Перед подключением с помощью клиента Windows необходимо вначале перейти на раскладку, в которой вводится логин и пароль, как правило это EN.}} | ||
== Дополнительно (MATE) == | |||
Для использования сервером установленной графической оболочки MATE выполните следующее: | Для использования сервером установленной графической оболочки MATE выполните следующее: | ||
# Установите пакет {{pkg|mate-session}}. | |||
#: <syntaxhighlight lang="bash"># apt-get install mate-session</syntaxhighlight> | |||
# Убедитесь, что по умолчанию будет запускаться mate-session: | |||
< | #: <syntaxhighlight lang="bash">$ runwm --print default | ||
/usr/bin/mate-session</ | /usr/bin/mate-session</syntaxhighlight> | ||
= Проброс звука = | == Проброс звука == | ||
Для прослушивания звука из терминального сеанса локально установите '''на терминальный сервер''' пакет {{pkg|pulseaudio-module-xrdp}}: | Для прослушивания звука из терминального сеанса локально установите '''на терминальный сервер''' пакет {{pkg|pulseaudio-module-xrdp}}: | ||
<syntaxhighlight lang="bash"># apt-get install pulseaudio-module-xrdp</syntaxhighlight> | |||
При использовании в качестве клиента xfreerdp добавьте параметр | При использовании в качестве клиента {{pkg|xfreerdp }}добавьте параметр '''/sound:sys:pulse''': | ||
xfreerdp /v:10.4.4.17 /u:user /p:123 /sound:sys:pulse | xfreerdp /v:10.4.4.17 /u:user /p:123 /sound:sys:pulse | ||
=Проброс USB-устройств= | == Проброс USB-устройств == | ||
Для проброса USB-устройств на сервере необходимо установить пакет xrdp-usb: | Для проброса USB-устройств на сервере необходимо установить пакет {{pkg|xrdp-usb-session}}: | ||
<syntaxhighlight lang="bash"># apt-get install xrdp-usb-session</syntaxhighlight> | |||
Данный компонент пробрасывает широкий спектр устройств, начиная от USB-веб-камер, до USB-токенов и смарт-карт. Инструкция по использованию: [[Xrdp-usb]] | Данный компонент пробрасывает широкий спектр устройств, начиная от USB-веб-камер, до USB-токенов и смарт-карт. Инструкция по использованию: [[Xrdp-usb]] | ||
{{Attention|Проброс будет работать только в рамках локальной сети, так как требует доступность клиентского компьютера с сервера}} | {{Attention|Проброс будет работать только в рамках локальной сети, так как требует доступность клиентского компьютера с сервера}} | ||
= Доступ доменных пользователей = | == Доступ доменных пользователей == | ||
В раздел домена в файле {{path|/etc/sssd/sssd.conf}} необходимо указать '''ad_gpo_map_service = +xrdp-sesman''': | В раздел домена в файле {{path|/etc/sssd/sssd.conf}} необходимо указать '''ad_gpo_map_service = +xrdp-sesman''': | ||
< | <syntaxhighlight lang="ini">[domain/TEST.ALT] | ||
... | ... | ||
ad_gpo_map_service = +xrdp-sesman | ad_gpo_map_service = +xrdp-sesman | ||
...</ | ...</syntaxhighlight> | ||
Иначе будет возникать ошибка: | Иначе будет возникать ошибка: | ||
pam_acct_mgmt failed: Permission denied | pam_acct_mgmt failed: Permission denied | ||
== Локальные группы для доменных пользователей == | === Локальные группы для доменных пользователей === | ||
Вариант с локальной группой для доменных пользователей не работает, поэтому для них работает отключение группы (или указание любой нелокальной, даже несуществующей): | Вариант с локальной группой для доменных пользователей не работает, поэтому для них работает отключение группы (или указание любой нелокальной, даже несуществующей): | ||
Строка 90: | Строка 111: | ||
После исправления файла запустите | После исправления файла запустите | ||
<syntaxhighlight lang="bash"># systemctl restart xrdp-sesman</syntaxhighlight> | |||
Журнал для sesman (сеансов пользователей) находится в файле {{path|/var/log/xrdp-sesman.log}}. | Журнал для sesman (сеансов пользователей) находится в файле {{path|/var/log/xrdp-sesman.log}}. | ||
Данная ситуация возникла потому, что в больших доменах показ всех членов группы нагружает систему, поэтому в /etc/sssd/sssd.conf по умолчанию используется значение '''enumerate = false''' | Данная ситуация возникла потому, что в больших доменах показ всех членов группы нагружает систему, поэтому в {{path|/etc/sssd/sssd.conf}} по умолчанию используется значение '''enumerate = false'''. | ||
Если в разделе домена в файле {{path|/etc/sssd/sssd.conf}} явно указать '''enumerate=true''': | Если в разделе домена в файле {{path|/etc/sssd/sssd.conf}} явно указать '''enumerate=true''': | ||
< | <syntaxhighlight lang="ini">[domain/TEST.ALT] | ||
id_provider = ad | id_provider = ad | ||
auth_provider = ad | auth_provider = ad | ||
Строка 104: | Строка 125: | ||
fallback_homedir = /home/%d/%u | fallback_homedir = /home/%d/%u | ||
debug_level = 0 | debug_level = 0 | ||
enumerate = true</ | enumerate = true</syntaxhighlight> | ||
то в {{path|/etc/xrdp/sesman.ini}} можно указать | то в {{path|/etc/xrdp/sesman.ini}} можно указать | ||
Строка 113: | Строка 134: | ||
Не забудьте перезапустить службы '''sssd''' и '''xrdp-sesman'''. | Не забудьте перезапустить службы '''sssd''' и '''xrdp-sesman'''. | ||
== Повышение привилегий == | === Повышение привилегий === | ||
* consolehelper, beesu — ограничений нет; | * consolehelper, beesu — ограничений нет; | ||
* polkit — требует создание дополнительных правил для удалённых пользователей. Подробнее описано на https://github.com/neutrinolabs/xrdp/issues/1568#issuecomment-624727037 | * polkit — требует создание дополнительных правил для удалённых пользователей. Подробнее описано на https://github.com/neutrinolabs/xrdp/issues/1568#issuecomment-624727037 | ||
= Производительность = | == Производительность == | ||
Рекомендуется отключить эффекты рабочего стола. Можно установить пакеты: | Рекомендуется отключить эффекты рабочего стола. Можно установить пакеты: | ||
Строка 131: | Строка 152: | ||
См. также: https://askubuntu.com/questions/1283709/xrdp-and-xfce4-ubuntu-18-04-unusable#tab-top | См. также: https://askubuntu.com/questions/1283709/xrdp-and-xfce4-ubuntu-18-04-unusable#tab-top | ||
= Решение проблем = | === Оптимизация производительности xfreerdp === | ||
xfreerdp ... +bitmap-cache /rfx /codec-cache:rfx /compression-level:2 /video | |||
При подключении с linux-машины на linux-машину это очень сильно улучшает производительность передачи графики и видео. Для Windows это не критично (похоже, там нужные опции включаются автоматически). | |||
== Решение проблем == | |||
== Общий подход == | === Общий подход === | ||
Первым делом обратите внимание на логи как сервера, так и сессии: | Первым делом обратите внимание на логи как сервера, так и сессии: | ||
Строка 144: | Строка 171: | ||
(EE) Failed to load module "xorgxrdp" (module requirement mismatch, 0) | (EE) Failed to load module "xorgxrdp" (module requirement mismatch, 0) | ||
== Проблемы соединения с мобильным rdp-клиентом == | === Проблемы соединения с мобильным rdp-клиентом === | ||
В некоторых мобильных rdp-клиентах, особенно предназначенных для работы на старых версиях Android, если выбрать режим | В некоторых мобильных rdp-клиентах, особенно предназначенных для работы на старых версиях Android, если выбрать режим «Воспроизведение звука на стороне клиента» (или аналогичный) возникает ошибка соединения. | ||
Решается запретом воспроизведения звука в настройках клиента или изменением в xrdp.ini в строке rdpsnd=true, значения true на false. При этом клиент лишается возможности воспроизводить звук, однако в остальном соединение работает. | Решается запретом воспроизведения звука в настройках клиента или изменением в {{path|/etc/xrdp/xrdp.ini}} в строке rdpsnd=true, значения true на false. При этом клиент лишается возможности воспроизводить звук, однако в остальном соединение работает. | ||
== Проблема подключения с Windows XP == | === Проблема подключения с Windows XP === | ||
Для подключения рабочих станций с Windows XP необходимо в файле {{path|/etc/xrdp/xrdp.ini}} добавить поддержку протокола TLSv1.1: | Для подключения рабочих станций с Windows XP необходимо в файле {{path|/etc/xrdp/xrdp.ini}} добавить поддержку протокола TLSv1.1: | ||
Строка 158: | Строка 185: | ||
Эта поддержка была исключена из конфигурации по умолчанию в версии 0.9.8 (https://github.com/neutrinolabs/xrdp/releases/tag/v0.9.8). | Эта поддержка была исключена из конфигурации по умолчанию в версии 0.9.8 (https://github.com/neutrinolabs/xrdp/releases/tag/v0.9.8). | ||
== Проблемы соединения с тонким клиентом Dell Wyse 3040 == | === Проблемы соединения с тонким клиентом Dell Wyse 3040 === | ||
Для подключения тонких клиентов Dell Wyse 3040 в {{path|/etc/xrdp/xrdp.ini}} необходимо выключить звуковую поддержку: | Для подключения тонких клиентов Dell Wyse 3040 в {{path|/etc/xrdp/xrdp.ini}} необходимо выключить звуковую поддержку: | ||
Строка 164: | Строка 191: | ||
rdpsnd=false | rdpsnd=false | ||
== Проблемы одновременного запуска локального и удалённого сеанса == | === Проблемы одновременного запуска локального и удалённого сеанса === | ||
С версии 0.9.14-alt5 файл {{path|/etc/pam.d/xrdp-sesman}} стал основан на правилах common-login. Второй сеанс systemd для одного и того же пользователя не удаётся запустить. Если это действительно надо, замените строку | С версии 0.9.14-alt5 файл {{path|/etc/pam.d/xrdp-sesman}} стал основан на правилах common-login. Второй сеанс systemd для одного и того же пользователя не удаётся запустить. Если это действительно надо, замените строку | ||
Строка 173: | Строка 200: | ||
session substack system-policy | session substack system-policy | ||
== Процесс gvfsd-trash занимает 100% процессора == | === Процесс gvfsd-trash занимает 100% процессора === | ||
Создайте раздел или файл подкачки. Например, по статье: [[Swap]] | Создайте раздел или файл подкачки. Например, по статье: [[Swap]] | ||
== Рабочий стол Mate в сеансе не показывает значки == | === Рабочий стол Mate в сеансе не показывает значки === | ||
Вариант 1. | Вариант 1. | ||
Создайте файл {{path|/etc/xdg/autostart/caja-restart.desktop}}: | Создайте файл {{path|/etc/xdg/autostart/caja-restart.desktop}}: | ||
< | <syntaxhighlight lang="ini">[Desktop Entry] | ||
Type=Application | Type=Application | ||
Name=Restart Caja in remote session | Name=Restart Caja in remote session | ||
Exec=dbus-launch caja --force-desktop</ | Exec=dbus-launch caja --force-desktop</syntaxhighlight> | ||
Вариант 2. | Вариант 2. | ||
Строка 198: | Строка 225: | ||
exec mate-session | exec mate-session | ||
== Если пользователь ранее не регистрировал локальный сеанс, то при подключении новым пользователем xrdp не создаёт окружение | Вариант 3. | ||
См. [[Xrdp#Отсутствует_часть_пунктов_меню_в_Mate_и_Xfce|Отсутствует часть пунктов меню в Mate и Xfce]] | |||
=== Если пользователь ранее не регистрировал локальный сеанс, то при подключении новым пользователем xrdp не создаёт окружение пользователя в /home === | |||
Данная ситуация характеризуется следующей ошибкой при попытке подключения новым пользователем по xrdp: | Данная ситуация характеризуется следующей ошибкой при попытке подключения новым пользователем по xrdp: | ||
[ERROR] another Xserver might already be active on display 9 - see log | [ERROR] another Xserver might already be active on display 9 - see log | ||
[DEBUG] aborting connection... | [DEBUG] aborting connection... | ||
Для решения этой проблемы необходимо добавить в конец файла /etc/ | Для решения этой проблемы необходимо добавить в конец файла {{path|/etc/pam.d/xrdp-sesman}} строки: | ||
session required pam_env.so readenv=1 user_readenv=0 | session required pam_env.so readenv=1 user_readenv=0 | ||
session required pam_mkhomedir.so skel=/etc/skel/ umask=0077 | session required pam_mkhomedir.so skel=/etc/skel/ umask=0077 | ||
=== Отсутствует часть пунктов меню в Mate и Xfce === | |||
Проблема возникает из-за некорректного формирования переменной окружения '''XDG_CURRENT_DESKTOP'''. | |||
Должно быть, например, '''XDG_CURRENT_DESKTOP=XFCE''' или '''XDG_CURRENT_DESKTOP=MATE''', а формируется '''XDG_CURRENT_DESKTOP=Old'''. Видимо '''wm-select''' не умеет нормально задавать '''XDG_CURRENT_DESKTOP'''. | |||
Удаление '''wm-select''' решает проблему с ярлыками и урезанным меню (при этом не будет возможности выбрать DE'''!'''). Работает как для DE установленного из коробки, так и установленного вручную. | |||
Другой вариант решения, это добавить '''"export XDG_CURRENT_DESKTOP=XFCE"''' в скрипт {{path|/etc/xrdp/startwm.sh}}: | |||
<syntaxhighlight lang="sh">... | |||
# debian, alt | |||
if [ -r /etc/X11/Xsession ]; then | |||
pre_start | |||
export XDG_CURRENT_DESKTOP=XFCE | |||
. /etc/X11/Xsession | |||
post_start | |||
exit 0 | |||
fi | |||
...</syntaxhighlight> | |||
[[Категория:Удалённый доступ]][[Категория:Терминальный сервер]] | [[Категория:Удалённый доступ]][[Категория:Терминальный сервер]] | ||
{{Category navigation|title=Терминальный сервер|category=Терминальный сервер|sortkey={{SUBPAGENAME}}}} | {{Category navigation|title=Терминальный сервер|category=Терминальный сервер|sortkey={{SUBPAGENAME}}}} |
Текущая версия от 19:40, 27 июня 2024
Первоначальная настройка сервера XRDP на сервере
- Установить пакет xrdp:
# apt-get install xrdp
- Включить и добавить в автозапуск сервисы:
# systemctl enable --now xrdp xrdp-sesman
Права доступа пользователя:
- Для доступа к терминальному сеансу — включить в группу tsusers:
# gpasswd -a user tsusers
- Для проброса папки — включить в группу fuse:
# gpasswd -a user fuse
Настройки
Настройки сервера хранятся в файле /etc/xrdp/sesman.ini. Некоторые настройки сервера установленные по умолчанию:
- AllowRootLogin=true — авторизация Root;
- MaxLoginRetry=4 — максимальное количество попыток подключения;
- TerminalServerUsers=tsusers — группа, в которую необходимо добавить пользователей для организации доступа к серверу;
- MaxSessions=50 — максимальное количество подключений к серверу;
- KillDisconnected=false — разрыв сеанса при отключении пользователя;
- FuseMountName=Mount_FOLDER — название монтируемой папки.
По умолчанию для подключения по RDP используется порт 3389. Номер порта можно изменить в файле /etc/xrdp/xrdp.ini.
Подключение
Для подключения можно использовать FreeRDP — клиент для подключения к удаленному рабочему столу по протоколу RDP.
Установить пакет xfreerdp:
# apt-get install xfreerdp
Синтаксис:
xfreerdp [файл] [параметры] [/v:<сервер>[:порт]]
Описание некоторых параметров:
- /v:<сервер>[:порт] — IP-адрес или имя сервера;
- /u:<пользователь> — имя пользователя;
- /p:<пароль> — пароль пользователя;
- /w:<ширина> — ширина окна;
- /h:<высота> — высота окна;
- /f — полноэкранный режим;
- /size:<ширина>x<высота> — размер окна;
- /drive:<название>,<путь> — подключение каталога.
Пример:
$ xfreerdp /drive:Epson,/home/cas/epson /v:10.4.129.129 /u:user /p:123
где:
- Epson — название папки, которая будет показываться в каталоге thinclient_drives в домашней папке терминального пользователя, у локального пользователя пробрасывается папка /home/cas/epson;
- 10.4.129.129 — адрес терминального сервера;
- user — имя терминального пользователя;
- 123 — пароль терминального пользователя.
Если пользователь или пароль не указаны, появится окно входа:
Также для подключения можно использовать клиент Remmina, Connector или Krdc.
Дополнительно (MATE)
Для использования сервером установленной графической оболочки MATE выполните следующее:
- Установите пакет mate-session.
# apt-get install mate-session
- Убедитесь, что по умолчанию будет запускаться mate-session:
$ runwm --print default /usr/bin/mate-session
Проброс звука
Для прослушивания звука из терминального сеанса локально установите на терминальный сервер пакет pulseaudio-module-xrdp:
# apt-get install pulseaudio-module-xrdp
При использовании в качестве клиента xfreerdp добавьте параметр /sound:sys:pulse:
xfreerdp /v:10.4.4.17 /u:user /p:123 /sound:sys:pulse
Проброс USB-устройств
Для проброса USB-устройств на сервере необходимо установить пакет xrdp-usb-session:
# apt-get install xrdp-usb-session
Данный компонент пробрасывает широкий спектр устройств, начиная от USB-веб-камер, до USB-токенов и смарт-карт. Инструкция по использованию: Xrdp-usb
Доступ доменных пользователей
В раздел домена в файле /etc/sssd/sssd.conf необходимо указать ad_gpo_map_service = +xrdp-sesman:
[domain/TEST.ALT]
...
ad_gpo_map_service = +xrdp-sesman
...
Иначе будет возникать ошибка:
pam_acct_mgmt failed: Permission denied
Локальные группы для доменных пользователей
Вариант с локальной группой для доменных пользователей не работает, поэтому для них работает отключение группы (или указание любой нелокальной, даже несуществующей):
В файле /etc/xrdp/sesman.ini
TerminalServerUsers=
После исправления файла запустите
# systemctl restart xrdp-sesman
Журнал для sesman (сеансов пользователей) находится в файле /var/log/xrdp-sesman.log.
Данная ситуация возникла потому, что в больших доменах показ всех членов группы нагружает систему, поэтому в /etc/sssd/sssd.conf по умолчанию используется значение enumerate = false.
Если в разделе домена в файле /etc/sssd/sssd.conf явно указать enumerate=true:
[domain/TEST.ALT]
id_provider = ad
auth_provider = ad
chpass_provider = ad
default_shell = /bin/bash
fallback_homedir = /home/%d/%u
debug_level = 0
enumerate = true
то в /etc/xrdp/sesman.ini можно указать
TerminalServerUsers=domain users
Не забудьте перезапустить службы sssd и xrdp-sesman.
Повышение привилегий
- consolehelper, beesu — ограничений нет;
- polkit — требует создание дополнительных правил для удалённых пользователей. Подробнее описано на https://github.com/neutrinolabs/xrdp/issues/1568#issuecomment-624727037
Производительность
Рекомендуется отключить эффекты рабочего стола. Можно установить пакеты:
Среда | Пакет |
MATE | mate-reduced-resource |
XFCE | xfce-reduced-resource |
См. также: https://askubuntu.com/questions/1283709/xrdp-and-xfce4-ubuntu-18-04-unusable#tab-top
Оптимизация производительности xfreerdp
xfreerdp ... +bitmap-cache /rfx /codec-cache:rfx /compression-level:2 /video
При подключении с linux-машины на linux-машину это очень сильно улучшает производительность передачи графики и видео. Для Windows это не критично (похоже, там нужные опции включаются автоматически).
Решение проблем
Общий подход
Первым делом обратите внимание на логи как сервера, так и сессии:
- /var/log/xrdp.log и /var/log/xrdp-sesman.log
- ~/.xorgxrdp.*.log в домашнем каталоге пользователя
Например, такие строчки в последнем свидетельствуют о необходимости запроса пересборки xrdp с текущим xorg-server:
(EE) xorgxrdp: module ABI major version (23) doesn't match the server's version (24) (EE) Failed to load module "xorgxrdp" (module requirement mismatch, 0)
Проблемы соединения с мобильным rdp-клиентом
В некоторых мобильных rdp-клиентах, особенно предназначенных для работы на старых версиях Android, если выбрать режим «Воспроизведение звука на стороне клиента» (или аналогичный) возникает ошибка соединения.
Решается запретом воспроизведения звука в настройках клиента или изменением в /etc/xrdp/xrdp.ini в строке rdpsnd=true, значения true на false. При этом клиент лишается возможности воспроизводить звук, однако в остальном соединение работает.
Проблема подключения с Windows XP
Для подключения рабочих станций с Windows XP необходимо в файле /etc/xrdp/xrdp.ini добавить поддержку протокола TLSv1.1:
ssl_protocols=TLSv1.1, TLSv1.2, TLSv1.3
Эта поддержка была исключена из конфигурации по умолчанию в версии 0.9.8 (https://github.com/neutrinolabs/xrdp/releases/tag/v0.9.8).
Проблемы соединения с тонким клиентом Dell Wyse 3040
Для подключения тонких клиентов Dell Wyse 3040 в /etc/xrdp/xrdp.ini необходимо выключить звуковую поддержку:
rdpsnd=false
Проблемы одновременного запуска локального и удалённого сеанса
С версии 0.9.14-alt5 файл /etc/pam.d/xrdp-sesman стал основан на правилах common-login. Второй сеанс systemd для одного и того же пользователя не удаётся запустить. Если это действительно надо, замените строку
session include common-login
на
session substack system-auth session required pam_loginuid.so session substack system-policy
Процесс gvfsd-trash занимает 100% процессора
Создайте раздел или файл подкачки. Например, по статье: Swap
Рабочий стол Mate в сеансе не показывает значки
Вариант 1.
Создайте файл /etc/xdg/autostart/caja-restart.desktop:
[Desktop Entry]
Type=Application
Name=Restart Caja in remote session
Exec=dbus-launch caja --force-desktop
Вариант 2.
Замените строку в файле /usr/share/applications/caja.desktop
Exec=/usr/bin/caja
на
Exec=/usr/bin/caja --force-desktop
Чтобы избежать сообщение об ошибке получения имени сессии, в файл /etc/xrdp/startwm.sh добавьте следующие строки
unset DBUS_SESSION_BUS_ADDRESS exec mate-session
Вариант 3.
См. Отсутствует часть пунктов меню в Mate и Xfce
Если пользователь ранее не регистрировал локальный сеанс, то при подключении новым пользователем xrdp не создаёт окружение пользователя в /home
Данная ситуация характеризуется следующей ошибкой при попытке подключения новым пользователем по xrdp:
[ERROR] another Xserver might already be active on display 9 - see log [DEBUG] aborting connection...
Для решения этой проблемы необходимо добавить в конец файла /etc/pam.d/xrdp-sesman строки:
session required pam_env.so readenv=1 user_readenv=0 session required pam_mkhomedir.so skel=/etc/skel/ umask=0077
Отсутствует часть пунктов меню в Mate и Xfce
Проблема возникает из-за некорректного формирования переменной окружения XDG_CURRENT_DESKTOP. Должно быть, например, XDG_CURRENT_DESKTOP=XFCE или XDG_CURRENT_DESKTOP=MATE, а формируется XDG_CURRENT_DESKTOP=Old. Видимо wm-select не умеет нормально задавать XDG_CURRENT_DESKTOP. Удаление wm-select решает проблему с ярлыками и урезанным меню (при этом не будет возможности выбрать DE!). Работает как для DE установленного из коробки, так и установленного вручную.
Другой вариант решения, это добавить "export XDG_CURRENT_DESKTOP=XFCE" в скрипт /etc/xrdp/startwm.sh:
...
# debian, alt
if [ -r /etc/X11/Xsession ]; then
pre_start
export XDG_CURRENT_DESKTOP=XFCE
. /etc/X11/Xsession
post_start
exit 0
fi
...