XRDP Удалённый рабочий стол в CentOS

Содержание
Введение
Подготовка к установке
Установка
Настройка после установки
Запуск
Проверить статус
Перезапуск xrdp сервиса
Клиенты: xfreerdp, remmina…
Открыть порт 3389
Изменить xrdp порт
Решение проблем
GNUmakefile
Похожие статьи

Введение

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 -y install epel-release

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

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

sudo yum update
sudo yum -y install centos-desktop

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

sudo yum -y update
sudo yum -y 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 -y 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 -y 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 -l xrdp

-l выводит предложения до конца

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

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 Mar 29 13:01:14 andrei xrdp[188750]: (188750)(139708266788672)[INFO ] address [0.0.0.0] port [3389] mode 1 Mar 29 13:01:14 andrei xrdp[188750]: (188750)(139708266788672)[INFO ] listening to port 3389 on 0.0.0.0 Mar 29 13:01:14 andrei xrdp[188750]: (188750)(139708266788672)[INFO ] xrdp_listen_pp done Mar 29 13:01:14 andrei xrdp[188750]: (188750)(139708266788672)[DEBUG] Closed socket 7 (AF_INET6 :: port 3389) Mar 29 13:01:14 andrei systemd[1]: xrdp.service: Can't open PID file /run/xrdp/xrdp.pid (yet?) after start: Operation > Mar 29 13:01:14 andrei systemd[1]: Started xrdp daemon. Mar 29 13:01:14 andrei xrdp[188751]: (188751)(139708266788672)[INFO ] starting xrdp with pid 188751 Mar 29 13:01:14 andrei xrdp[188751]: (188751)(139708266788672)[INFO ] address [0.0.0.0] port [3389] mode 1 Mar 29 13:01:14 andrei xrdp[188751]: (188751)(139708266788672)[INFO ] listening to port 3389 on 0.0.0.0 Mar 29 13:01:14 andrei xrdp[188751]: (188751)(139708266788672)[INFO ] xrdp_listen_pp done

Перезапуск xrdp

sudo systemctl restart xrdp

Клиенты

Обычно мне хватает xfreerdp но при соединении через посредника на нестандартном порту добиться результата смог только с Remmina.

Remmina

Подробнее про установку, настройку и работу с Remmina читайте здесь

xfreerdp

xfreerdp /v:192.168.56.113 /u:"andrei" /p:"password" /port:"3389"

Открыть порт

Чтобы открыть стандартный RDP порт 3389 выполните следующие действия.

sudo firewall-cmd --permanent --zone=public --add-port=3389/tcp

success

sudo firewall-cmd --reload

success

Изменить порт

Чтобы изменить порт, на котором XRDP ждёт подключения со стандартного 3389 на, например, 3999 выполните следующие действия.

sudo firewall-cmd --permanent --zone=public --add-port=3999/tcp
sudo systemctl stop xrdp
sudo vi /etc/xrdp/xrdp.ini

#port=3389 port=3999

sudo systemctl start xrdp
sudo systemctl status -l xrdp

xrdp.service - xrdp daemon Loaded: loaded (/usr/lib/systemd/system/xrdp.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2024-Mar-29 13:01:14 EET; 15s ago Docs: man:xrdp(8) man:xrdp.ini(5) Main PID: 10015 (xrdp) Tasks: 1 CGroup: /system.slice/xrdp.service └─10015 /usr/sbin/xrdp --nodaemon Mar 29 13:01:14 host113.andrei.com systemd[1]: Started xrdp daemon. Mar 29 13:01:14 host113.andrei.com xrdp[10015]: [INFO ] starting xrdp with pid 10015 Mar 29 13:01:14 host113.andrei.com xrdp[10015]: [INFO ] address [0.0.0.0] port [3999] mode 1 Mar 29 13:01:14 host113.andrei.com xrdp[10015]: [INFO ] listening to port 3999 on 0.0.0.0 Mar 29 13:01:14 host113.andrei.com xrdp[10015]: [INFO ] xrdp_listen_pp done

Изображение баннера

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

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

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) Mar 29 13:01:14 localhost.localdomain xrdp[11923]: [ERROR] trans_listen_addre... Mar 29 13:01:14 localhost.localdomain xrdp[11923]: [ERROR] xrdp_listen_main_l... Mar 29 13:01:14 localhost.localdomain xrdp[11923]: logging configuration: Mar 29 13:01:14 localhost.localdomain xrdp[11923]: LogFile: /var/log/xr... Mar 29 13:01:14 localhost.localdomain xrdp[11923]: LogLevel: [INFO ] Mar 29 13:01:14 localhost.localdomain xrdp[11923]: ConsoleLevel: <disabled> Mar 29 13:01:14 localhost.localdomain xrdp[11923]: SyslogLevel: [INFO ] Mar 29 13:01:14 localhost.localdomain systemd[1]: xrdp.service: main process ... Mar 29 13:01:14 localhost.localdomain systemd[1]: Unit xrdp.service entered f... Mar 29 13:01:14 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) Mar 29 13:01:14 localhost.localdomain xrdp[5017]: [ERROR] trans_listen_address failed Mar 29 13:01:14 localhost.localdomain xrdp[5017]: [ERROR] xrdp_listen_main_loop: xrdp_listen_get_port failed Mar 29 13:01:14 localhost.localdomain xrdp[5017]: logging configuration: Mar 29 13:01:14 localhost.localdomain xrdp[5017]: LogFile: /var/log/xrdp.log Mar 29 13:01:14 localhost.localdomain xrdp[5017]: LogLevel: [INFO ] Mar 29 13:01:14 localhost.localdomain xrdp[5017]: ConsoleLevel: <disabled> Mar 29 13:01:14 localhost.localdomain xrdp[5017]: SyslogLevel: [INFO ] Mar 29 13:01:14 localhost.localdomain systemd[1]: xrdp.service: main process exited, code=exited, status=1/FAILURE Mar 29 13:01:14 localhost.localdomain systemd[1]: Unit xrdp.service entered failed state. Mar 29 13:01:14 localhost.localdomain systemd[1]: xrdp.service failed.

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

sudo yum -y install tigervnc-server

Если сразу не помогло - перезагрузите всё что сможете. Возможно, стоить проверить обновление xrdp

Если в ошибке присутствует строка похожая на g_tcp_bind(11, 3389) - возможно проблема в порте.

Попробуйте освободить порт, либо используйте другой порт для XRDP

xrdp.service - xrdp daemon Loaded: loaded (/usr/lib/systemd/system/xrdp.service; disabled; vendor preset: disabled) Active: failed (Result: exit-code) since Wed 2022-08-24 09:36:08 EEST; 1s ago Docs: man:xrdp(8) man:xrdp.ini(5) Process: 21829 ExecStart=/usr/sbin/xrdp $XRDP_OPTIONS --nodaemon (code=exited, status=1/FAILURE) Main PID: 21829 (code=exited, status=1/FAILURE) Mar 29 13:01:14 localhost.localdomain systemd[1]: Started xrdp daemon. Mar 29 13:01:14 localhost.localdomain xrdp[21829]: [INFO ] starting xrdp with pid 21829 Mar 29 13:01:14 localhost.localdomain xrdp[21829]: [INFO ] address [0.0.0.0] port [3389] mode 1 Mar 29 13:01:14 localhost.localdomain xrdp[21829]: [INFO ] listening to port 3389 on 0.0.0.0 Mar 29 13:01:14 localhost.localdomain xrdp[21829]: [ERROR] g_tcp_bind(11, 3389) failed bind IPv6 (errno=98) and IPv4 (errno=22). Mar 29 13:01:14 localhost.localdomain xrdp[21829]: [ERROR] trans_listen_address failed Mar 29 13:01:14 localhost.localdomain xrdp[21829]: [ERROR] xrdp_listen_main_loop: xrdp_listen_get_port failed Mar 29 13:01:14 localhost.localdomain systemd[1]: xrdp.service: main process exited, code=exited, status=1/FAILURE Mar 29 13:01:14 localhost.localdomain systemd[1]: Unit xrdp.service entered failed state. Mar 29 13:01:14 localhost.localdomain systemd[1]: xrdp.service failed.

GNUmakefile

Пример файла для установки с помощью make

.PHONY: xrdp-ce7 xrdp-ce7: sudo yum -y update sudo yum -y upgrade sudo yum -y install epel-release sudo yum -y update sudo yum -y install xrdp tigervnc-server sudo systemctl enable xrdp sudo systemctl start xrdp

Похожие статьи
CentOS
X Window System CentOS
XRDP: Удалённый рабочий стол
VNC: Удалённый рабочий стол
keymap: Клавиатура
startwm
Изображение баннера

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

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

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