Удалённый рабочий стол в СentOS 7

Содержание статьи
Введение
Подготовка к установке
Установка
Настройка после установки
Запуск
Проверить статус
Перезапуск xrdp сервиса
Клавиатура и языки
Решение проблем

Введение

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

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

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

sudo yum update
sudo yum install centos-desktop

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

sudo yum update
sudo yum install xcentos-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

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

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

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

Поиск по сайту

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящуюю по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: