XRDP: Remote Desktop в Rocky

Contents
Introduction
Подготовка к установке
Установка
Настройка после установки
Запуск
Проверить статус
Перезапуск xrdp сервиса
Решение проблем
Статьи про Rocky

Introduction

xrdp-это бесплатная и открытая реализация сервера Microsoft RDP (Remote Desktop Protocol), которая позволяет операционным системам, отличным от Microsoft Windows (таким как Linux и операционные системы в стиле BSD ), обеспечить полностью функциональный RDP-совместимый удаленный рабочий стол.

Он работает путем соединения графики из системы X Window с клиентом и ретрансляции элементов управления из клиента обратно в X .

По словам разработчиков, протокол работает с rdesktop, FreeRDP и собственным клиентом удаленного рабочего стола Microsoft

Подготовка к установке

Перед установкой xrdp убедитесь, что у вас установлен epel-release

yum list epel-release

Loaded plugins: fastestmirror, langpacks Determining fastest mirrors * base: mirror.hosthink.net * epel: www.nic.funet.fi * extras: mirror.hosthink.net * updates: mirror.hosthink.net Installed Packages epel-release.noarch

Installed означает, что у меня epel-release установлен

Если вместо Installed вы видите Available - тогда установите командой

sudo yum install epel-release

To пользоваться xrdp нужно сперва установить X-сервер . Например, Gnome или Xfce.

Установить Gnome:

sudo yum update
sudo yum install rocky-desktop

Установить xfce:

sudo yum update
sudo yum install xrocky-desktop

После установки X сервера и epel-release можно перейти непосредственно к установке xrdp

Установка

Проверить наличие xrdp можно выполнив

yum list xrdp

Loaded plugins: fastestmirror, langpacks, product-id, search-disabled-repos, subscription-manager Loading mirror speeds from cached hostfile * base: mirror.hosthink.net * epel: mirrors.dotsrc.org * extras: mirror.hosthink.net * updates: mirror.hosthink.net Available Packages xrdp.x86_64 1:0.9.15-3.el7 epel

Available означает, что пакет не установлен но доступен для установки.

В последней строке можно увидеть, что xrdp.x86_64 доступен из epel репозитория. Поэтому и нужно было сперва установить epel-release

Установить xrdp можно командой

sudo yum install xrdp

Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: ftp.funet.fi * epel: mirror.cspacehostings.com * extras: ftp.funet.fi * updates: ftp.funet.fi Resolving Dependencies --> Running transaction check ---> Package xrdp.x86_64 1:0.9.15-3.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ====================================================================================================================================================================== Package Arch Version Repository Size ====================================================================================================================================================================== Installing: xrdp x86_64 1:0.9.15-3.el7 epel 434 k Transaction Summary ====================================================================================================================================================================== Install 1 Package Total download size: 434 k Installed size: 2.1 M Is this ok [y/d/N]:

y

Обратите внимание на Dependencies Resolved, если там не упоминается tigervnc, то рекомендую установить tigervnc-server самостоятельно.

sudo yum install tigervnc-server

Как вариант - при установке xrdp в Dependencies Resolved может присутствовать tigervnc-license и tigervnc-server-minimal. Это означает что про tigervnc не забыли.

Если вы не обратили внимание на логи установки - можно проверить что же всё-таки было установлено при посленем использовании yum install - достаточно выполнить

yum history info

Если нужно удалить всё что было только что установлено - execute

yum history undo 7

Настройка после установки

После установки содержимое директории с xrdp выглядит примерно так

ls /etc/xrdp

cert.pem km-00000407.ini km-0000040b.ini km-00000411.ini km-00000415.ini km-0000041d.ini km-0000080a.ini km-00000816.ini km-19360409.ini rsakeys.ini xrdp_keyboard.ini key.pem km-00000409.ini km-0000040c.ini km-00000412.ini km-00000416.ini km-00000807.ini km-0000080c.ini km-0000100c.ini openssl.conf sesman.ini km-00000406.ini km-0000040a.ini km-00000410.ini km-00000414.ini km-00000419.ini km-00000809.ini km-00000813.ini km-00010409.ini pulse xrdp.ini

Проверить режим работы SELinux можно командой

getenforce

Enforcing

Не будем менять Enforcing на Permissive и тем более Disabled а постараемся настроить всё в этом режиме.

cd /usr/sbin/
ls -Z xrdp*

-rwxr-xr-x. root root system_u:object_r:bin_t:s0 xrdp -rwxr-xr-x. root root system_u:object_r:bin_t:s0 xrdp-chansrv -rwxr-xr-x. root root system_u:object_r:bin_t:s0 xrdp-sesman

У вас также может присутствовать xrdp-sessvc

Если xrdp и xrdp-sesman (Session Manager) имеют тип unconfined_exec_t возможно вам придётся вручную изменить его на bin_t это можно сделать командой

chcon -t bin_t xrdp xrdp-sesman

Настройка startwm.

Скрипт startwm.sh может лежать как в /etc/xrdp так и в /usr/libexec/xrdp

ls /usr/libexec/xrdp

reconnectwm.sh startwm-bash.sh startwm.sh

Пример файла startwm.sh и варианты модификаций вы можете найти в статье startwm

Запуск xrdp

systemctl start xrdp

systemctl enable xrdp

Проверить статус

Проверить слушается ли порт 3389

netstat -ltn | grep 3389

tcp 0 0 0.0.0.0:3389 0.0.0.0:* LISTEN

Проверить статус xrdp

sudo systemctl status xrdp

Если всё работает, то вы увидите что-то похожее:

xrdp.service - xrdp daemon Loaded: loaded (/lib/systemd/system/xrdp.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2021-01-19 15:21:51 EET; 5min ago Docs: man:xrdp(8) man:xrdp.ini(5) Main PID: 188751 (xrdp) Tasks: 1 (limit: 38009) Memory: 1.9M CGroup: /system.slice/xrdp.service └─188751 /usr/sbin/xrdp Jan 17 15:21:50 andrei xrdp[188750]: (188750)(139708266788672)[INFO ] address [0.0.0.0] port [3389] mode 1 Jan 17 15:21:50 andrei xrdp[188750]: (188750)(139708266788672)[INFO ] listening to port 3389 on 0.0.0.0 Jan 17 15:21:50 andrei xrdp[188750]: (188750)(139708266788672)[INFO ] xrdp_listen_pp done Jan 17 15:21:50 andrei xrdp[188750]: (188750)(139708266788672)[DEBUG] Closed socket 7 (AF_INET6 :: port 3389) Jan 17 15:21:50 andrei systemd[1]: xrdp.service: Can't open PID file /run/xrdp/xrdp.pid (yet?) after start: Operation > Jan 17 15:21:51 andrei systemd[1]: Started xrdp daemon. Jan 17 15:21:52 andrei xrdp[188751]: (188751)(139708266788672)[INFO ] starting xrdp with pid 188751 Jan 17 15:21:52 andrei xrdp[188751]: (188751)(139708266788672)[INFO ] address [0.0.0.0] port [3389] mode 1 Jan 17 15:21:52 andrei xrdp[188751]: (188751)(139708266788672)[INFO ] listening to port 3389 on 0.0.0.0 Jan 17 15:21:52 andrei xrdp[188751]: (188751)(139708266788672)[INFO ] xrdp_listen_pp done

Перезапуск xrdp

sudo systemctl restart xrdp

Клиенты

Remmina

sudo yum install remmina

Решение проблем

Если вы сделали всё по инструкции, но подключение не работает, а когда проверяете статус получаете что-то похожее

xrdp.service - xrdp daemon Loaded: loaded (/usr/lib/systemd/system/xrdp.service; disabled; vendor preset: disabled) Active: failed (Result: exit-code) since Sun 2021-04-18 22:39:44 EEST; 12h ago Docs: man:xrdp(8) man:xrdp.ini(5) Process: 11923 ExecStart=/usr/sbin/xrdp $XRDP_OPTIONS --nodaemon (code=exited, status=1/FAILURE) Main PID: 11923 (code=exited, status=1/FAILURE) Apr 18 22:39:44 localhost.localdomain xrdp[11923]: [ERROR] trans_listen_addre... Apr 18 22:39:44 localhost.localdomain xrdp[11923]: [ERROR] xrdp_listen_main_l... Apr 18 22:39:44 localhost.localdomain xrdp[11923]: logging configuration: Apr 18 22:39:44 localhost.localdomain xrdp[11923]: LogFile: /var/log/xr... Apr 18 22:39:44 localhost.localdomain xrdp[11923]: LogLevel: [INFO ] Apr 18 22:39:44 localhost.localdomain xrdp[11923]: ConsoleLevel: <disabled> Apr 18 22:39:44 localhost.localdomain xrdp[11923]: SyslogLevel: [INFO ] Apr 18 22:39:44 localhost.localdomain systemd[1]: xrdp.service: main process ... Apr 18 22:39:44 localhost.localdomain systemd[1]: Unit xrdp.service entered f... Apr 18 22:39:44 localhost.localdomain systemd[1]: xrdp.service failed. Hint: Some lines were ellipsized, use -l to show in full.

xrdp.service - xrdp daemon Loaded: loaded (/usr/lib/systemd/system/xrdp.service; enabled; vendor preset: disabled) Active: failed (Result: exit-code) since Thu 2021-04-15 12:06:37 EEST; 2min 57s ago Docs: man:xrdp(8) man:xrdp.ini(5) Main PID: 5017 (code=exited, status=1/FAILURE) Apr 15 12:06:37 localhost.localdomain xrdp[5017]: [ERROR] trans_listen_address failed Apr 15 12:06:37 localhost.localdomain xrdp[5017]: [ERROR] xrdp_listen_main_loop: xrdp_listen_get_port failed Apr 15 12:06:37 localhost.localdomain xrdp[5017]: logging configuration: Apr 15 12:06:37 localhost.localdomain xrdp[5017]: LogFile: /var/log/xrdp.log Apr 15 12:06:37 localhost.localdomain xrdp[5017]: LogLevel: [INFO ] Apr 15 12:06:37 localhost.localdomain xrdp[5017]: ConsoleLevel: <disabled> Apr 15 12:06:37 localhost.localdomain xrdp[5017]: SyslogLevel: [INFO ] Apr 15 12:06:37 localhost.localdomain systemd[1]: xrdp.service: main process exited, code=exited, status=1/FAILURE Apr 15 12:06:37 localhost.localdomain systemd[1]: Unit xrdp.service entered failed state. Apr 15 12:06:37 localhost.localdomain systemd[1]: xrdp.service failed.

Если вы этого ещё не сделали - попробуйте установить tigervnc-server (В соединении скорее всего участвует VNC порт).

sudo yum install tigervnc-server

Если сразу не помогло - перезагрузите всё что сможете

Related Articles
XRDP в Rocky
Rocky Linux
keymap: Клавиатура и языки
startwm: Start Window Manager
Network Configuration в Rocky
VNC: Remote Desktop