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 Sep 09 09:09:53 andrei xrdp[188750]: (188750)(139708266788672)[INFO ] address [0.0.0.0] port [3389] mode 1 Sep 09 09:09:53 andrei xrdp[188750]: (188750)(139708266788672)[INFO ] listening to port 3389 on 0.0.0.0 Sep 09 09:09:53 andrei xrdp[188750]: (188750)(139708266788672)[INFO ] xrdp_listen_pp done Sep 09 09:09:53 andrei xrdp[188750]: (188750)(139708266788672)[DEBUG] Closed socket 7 (AF_INET6 :: port 3389) Sep 09 09:09:53 andrei systemd[1]: xrdp.service: Can't open PID file /run/xrdp/xrdp.pid (yet?) after start: Operation > Sep 09 09:09:53 andrei systemd[1]: Started xrdp daemon. Sep 09 09:09:53 andrei xrdp[188751]: (188751)(139708266788672)[INFO ] starting xrdp with pid 188751 Sep 09 09:09:53 andrei xrdp[188751]: (188751)(139708266788672)[INFO ] address [0.0.0.0] port [3389] mode 1 Sep 09 09:09:53 andrei xrdp[188751]: (188751)(139708266788672)[INFO ] listening to port 3389 on 0.0.0.0 Sep 09 09:09:53 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 Mon 2024-Sep-09 09:09:53 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 Sep 09 09:09:53 host113.andrei.com systemd[1]: Started xrdp daemon. Sep 09 09:09:53 host113.andrei.com xrdp[10015]: [INFO ] starting xrdp with pid 10015 Sep 09 09:09:53 host113.andrei.com xrdp[10015]: [INFO ] address [0.0.0.0] port [3999] mode 1 Sep 09 09:09:53 host113.andrei.com xrdp[10015]: [INFO ] listening to port 3999 on 0.0.0.0 Sep 09 09:09:53 host113.andrei.com xrdp[10015]: [INFO ] xrdp_listen_pp done

РЕКЛАМА хостинга Beget, которым я пользуюсь более десяти лет

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

Конец рекламы хостинга Beget, который я всем рекомендую.

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

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

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) Sep 09 09:09:53 localhost.localdomain xrdp[11923]: [ERROR] trans_listen_addre... Sep 09 09:09:53 localhost.localdomain xrdp[11923]: [ERROR] xrdp_listen_main_l... Sep 09 09:09:53 localhost.localdomain xrdp[11923]: logging configuration: Sep 09 09:09:53 localhost.localdomain xrdp[11923]: LogFile: /var/log/xr... Sep 09 09:09:53 localhost.localdomain xrdp[11923]: LogLevel: [INFO ] Sep 09 09:09:53 localhost.localdomain xrdp[11923]: ConsoleLevel: <disabled> Sep 09 09:09:53 localhost.localdomain xrdp[11923]: SyslogLevel: [INFO ] Sep 09 09:09:53 localhost.localdomain systemd[1]: xrdp.service: main process ... Sep 09 09:09:53 localhost.localdomain systemd[1]: Unit xrdp.service entered f... Sep 09 09:09:53 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) Sep 09 09:09:53 localhost.localdomain xrdp[5017]: [ERROR] trans_listen_address failed Sep 09 09:09:53 localhost.localdomain xrdp[5017]: [ERROR] xrdp_listen_main_loop: xrdp_listen_get_port failed Sep 09 09:09:53 localhost.localdomain xrdp[5017]: logging configuration: Sep 09 09:09:53 localhost.localdomain xrdp[5017]: LogFile: /var/log/xrdp.log Sep 09 09:09:53 localhost.localdomain xrdp[5017]: LogLevel: [INFO ] Sep 09 09:09:53 localhost.localdomain xrdp[5017]: ConsoleLevel: <disabled> Sep 09 09:09:53 localhost.localdomain xrdp[5017]: SyslogLevel: [INFO ] Sep 09 09:09:53 localhost.localdomain systemd[1]: xrdp.service: main process exited, code=exited, status=1/FAILURE Sep 09 09:09:53 localhost.localdomain systemd[1]: Unit xrdp.service entered failed state. Sep 09 09:09:53 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) Sep 09 09:09:53 localhost.localdomain systemd[1]: Started xrdp daemon. Sep 09 09:09:53 localhost.localdomain xrdp[21829]: [INFO ] starting xrdp with pid 21829 Sep 09 09:09:53 localhost.localdomain xrdp[21829]: [INFO ] address [0.0.0.0] port [3389] mode 1 Sep 09 09:09:53 localhost.localdomain xrdp[21829]: [INFO ] listening to port 3389 on 0.0.0.0 Sep 09 09:09:53 localhost.localdomain xrdp[21829]: [ERROR] g_tcp_bind(11, 3389) failed bind IPv6 (errno=98) and IPv4 (errno=22). Sep 09 09:09:53 localhost.localdomain xrdp[21829]: [ERROR] trans_listen_address failed Sep 09 09:09:53 localhost.localdomain xrdp[21829]: [ERROR] xrdp_listen_main_loop: xrdp_listen_get_port failed Sep 09 09:09:53 localhost.localdomain systemd[1]: xrdp.service: main process exited, code=exited, status=1/FAILURE Sep 09 09:09:53 localhost.localdomain systemd[1]: Unit xrdp.service entered failed state. Sep 09 09:09:53 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. Статьи можно расшарить в соцсетях, нажав на иконку сети: