Ошибка при подключении xrdp

В статье рассказано о том, как настроить подключение к Linux через протокол RDP (Remote Desktop Protocol).

RDP — это наиболее распространённый протокол для удаленной работы (или администрирования ПК), при котором экран компьютера отображается на удалённом ПК, управление с мыши и клавиатуры. RDP может использоваться между ПК с различными ОС — как Windows, так и Linux.

Следующий гайд был написан по итогам успешной установки и запуска RDP сервера под Linux Runtu (Description: Ubuntu 20.04.3 LTS) и Linux Mint «Uma» Description: Linux Mint 20.2).

Установка и настройка RDP в Linux

  1. Если до этого предпринимались неудачные попытки настройки xrdp, прежде всего нужно удалить пакеты xrdp и xorgrdp и их настройки, чтобы выполнить установку с чистого листа.

    sudo apt-get purge xrdp xorgxrdp
  2. Вначале нужно выполнить обновление версий пакетов:

    sudo apt-get update & sudo apt-get upgrade & sudo apt-get dist-upgrade
  3. Если операционная система Ubuntu Linux 16.04 или 18.04, либо 20.04 или 21.04, для установки xrdp советую воспользоваться готовым скриптом с сайта

https://c-nergy.be/downloads/xRDP/xrdp-installer-1.4.zip — скачать архив и извлечь скрипт.

Документация по программе «xrdp-installer» находится по адресу https://c-nergy.be/blog/?p=17810, а также в самой программе выводится краткая справка о возможных параметрах её вызова, при запуске sh-файла с ключом —help:

bash xrdp-installer-1.4.sh --help

Для запуска вводить команду sudo не нужно, когда надо она запросит пароль su. Запуск, например, так:

chmod +x xrdp-installer-1.4.sh
./xrdp-installer-1.4.sh

И затем перейти к разделам ОКОНЧАТЕЛЬНАЯ НАСТРОЙКА XRDP и «Диагностика«.


Если операционная система не принадлежит к перечисленным, путь установки длиннее.

sudo apt-get install x-window-system xserver-xorg xserver-xorg-core
sudo apt-get install  xserver-xorg-legacy

Выполняем реконфигурацию пакета

sudo apt-get install xserver-xorg-legacy
sudo dpkg-reconfigure xserver-xorg-legacy

окно для конфигурирования запуска Xorg:
xserver-xorg-legacy
в котором я выбрал последний пункт, дающий наибольшие права — «Кто угодно».

Данной командой производится запись в файл cat /etc/X11/Xwrapper.config:
allowed_users=anybody


Установка пакетов, необходимых для запуска xrdp:

sudo apt-get install libx11-dev libxfixes-dev libssl-dev libpam0g-dev libtool libjpeg-dev flex bison gettext autoconf libxml-parser-perl libfuse-dev xsltproc libxrandr-dev python3-libxml2 nasm fuse pkg-config git intltool checkinstall

Установка двух основных пакетов XRDP:

sudo apt-get install xrdp xorgxrdp xserver-xorg-input-all 

Можно заметить, что программа установки создаст RSA ключ.
Чтобы операционная система могла прочитать этот ключ, нужно добавить пользователя xrdp в группу ssl-cert:

sudo adduser xrdp ssl-cert

Затем, нужно установить полностью графическую подсистему MESA и драйверы видеокарты. Зачем?
Дело в том, что имеет место цепочка: RDP client -> сеть -> Xrdp server -> Xsession -> Xorg -> MESA -> OpenGL Driver -> видеокарта
При отсутствии возможности запуска графического режима, RDP клиент также «отвалится» сразу после входа.

sudo apt-get install libgl1-mesa-dri libglew1.5-dev libglew-dev libgles2-mesa-dev libglm-dev mesa-utils-extra mesa-common-dev freeglut3 freeglut3-dev

Наконец, видеокарта должна поддерживать режим OpenGL версии 2.1 и выше и иметь установленный драйвер для Linux.

  1. Если старый компьютер — на чипсетах Interl 945 (под общим названием i915) — нужно установить модифицированный, сторонний драйвер, т.к. на штатных драйверах по умолчанию включается режим OpenGL 1.4, тогда как нужен 2.1. Иначе будут ошибки (см. ниже раздел «Ошибки»)

Если следующая команда выводит информацию, что OpenGL высокой версии, ничего делать не нужно:

glxinfo | grep OpenGL

Пример хорошая версия драйвера — равна 2.1 (обращаем внимание на строчку OpenGL version string:
OpenGL vendor string: Mesa Project
OpenGL renderer string: i915 (chipset: 945G)
OpenGL version string: 2.1 Mesa 21.3.0-devel (git-dfef775 2021-09-02 focal-oibaf-ppa)
OpenGL shading language version string: 1.20
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 2.0 Mesa 21.3.0-devel (git-dfef775 2021-09-02 focal-oibaf-ppa)
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.0.16
OpenGL ES profile extensions:

Если версия 1.4 старая, которая не годится для XRDP, вывод команды glxinfo следующий:
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) 945G
OpenGL version string: 1.4 Mesa 21.0.3
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 2.0 Mesa 21.0.3
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.0.16
OpenGL ES profile extensions:

Старая версия драйвера с поддержкой OpenGL 1.4 (установленная по умолчанию из пакета «xserver-xorg-video-intel»). данная версия OpenGL 1.4 не подходит.

Устанавливаем новую версию драйвера (ТОЛЬКО ДЛЯ СТАРЫХ ЧИПСЕТОВ ВСТРОЕННОЙ ГРАФИКИ i915 — i925 — i945)

sudo add-apt-repository ppa:oibaf/graphics-drivers && sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade && sudo reboot

Данная команда обновит пакеты графического драйвера для встроенной графики Intel и выполнит перезагрузку.

P.S. Если потребуется в-дальнейшем удаление PPA-репозитория, например, после установки новой видеокарты, команда для удаления: sudo ppa-purge ppa:oibaf/graphics-drivers.

  1. Разрешение подключения к X-серверу «для всех» — дано ранее командой sudo dpkg-reconfigure xserver-xorg-legacy
    Конфигурация записана в файл

    sudo ls -l /etc/X11/Xwrapper.config

Если необходимо, можно посмотреть его содержимое или отредактировать

sudo nano /etc/X11/Xwrapper.config
  • Примечание console — Xorg доступен только для пользователей из консоли, anybody для всех. По умолчанию указано console.
    Подробнее см команду man Xwrapper.config.
  1. Настройка графики OpenGL (обязательно лишь для ПК старых чипсетов со встроенной графикой i915):

Вывод на экран модели графического адаптера:

lspci | grep VGA

Если графический адаптер — встроенная графика Intel чипсета 915 или 82945G переходим в каталог

cd /usr/share/X11/xorg.conf.d/

создаём файл 20-intel.conf:

sudo nano 20-intel.conf

и добавляем в него текст:

Section "Device"
        Identifier "Intel Graphics"
        Driver "intel"
        Option "TearFree" "true"
        Option "AccelMethod" "SNA"
        Option "BackingStore" "true"
        Option "DRI" "3"
EndSection

Вариант для старых ПК: в строке «AccelMethod» вместо стандартного метода ускорения графики «SNA» указать «uxa«.

Лучше использовать «SNA» — более современный метод встроенной графики x86. Где uxa — предыдущая архитектура.

Сохраняем и выходим Ctrl+O, Ctrl+X.

  1. Редактирование конфигурационного файла XRDP:
sudo nano /etc/xrdp/xrdp.ini

в середину файла после строки «background» добавить адрес по умолчанию для XRDP.
address=address=0.0.0.0
nastrojka_xrdp

Перезапуск сервера:

sudo /etc/init.d/xrdp stop
sudo /etc/init.d/xrdp start

ОКОНЧАТЕЛЬНАЯ НАСТРОЙКА XRDP

  1. Добавляем пользователя xrdp в группу tty и даём права на последовательный порт (для решения проблемы начала сессии Xorg, что ‘tty0 access denied’)

    sudo usermod -a -G tty xrdp
    sudo chmod g+r /dev/tty0
  2. Разрешаем запуск сервиса «xrdp»

    sudo systemctl start xrdp
    sudo systemctl enable xrdp
  3. ВАЖНО: Копируем файл скрипт для запуска сессии и исправляем его

    cp /etc/X11/xinit/xinitrc ~/.xinitrc

Узнаём тип установленной оболочки рабочего стола:

echo $XDG_CURRENT_DESKTOP

Если вывод команды пустой, попробовать

cat /etc/X11/default-display-manager

Редактируем файл ~/.xinitrc для запуска сеанса (сессии):

nano ~/.xinitrc

комментируем или удаляем строчку /etc/X11/Xsession, вместо неё пишем:

exec startlxde

или

exec openbox-session
  • для ОС Runtu

или

exec startxfce4

для Linux Mint с оболочкой рабочего стола XFCE

или

exec startlxqt

для Lubuntu или Linux Mint с оболочкой рабочего стола LXQT (если такой вывод у команды
echo $XDG_CURRENT_DESKTOP).


Таким образом, файл .xinitrc в домашнем каталоге пользователя, запускаемый во время старта сеанса XRDP, принял следующий компактный вид:

#!/bin/sh
exec startlxqt

Примечание от 09.09.2021: В этот файл можно добавить запуск любых нужных программ, например, запуск сервера звука pulseaudio и загрузку и переключение национальной раскладки клавиатуры. Тогда файл .xinitrc примет вид:

#!/bin/sh
pulseaudio &
setxkbmap -layout 'us,ru' -option 'grp:ctrl_shift_toggle,grp_led:scroll' &
exec startlxqt

Примечание от 07.10.2021: данные команды нужно добавлять в файл ~/.xinitrc пользователя, который будет подключаться по протоколу RDP.

Содержимое файла ~/.xinitrc, если серверная ОС — Linux Mint с оболочкой XFCE:

#!/bin/sh
pulseaudio &
setxkbmap -layout 'us,ru' -option 'grp:alt_shift_toggle,grp_led:scroll' &
exec startxfce4

Когда рабочий стол сервера — LXQT, мой файл ~/.xinitrc следующий:
#!/bin/sh
pulseaudio &
setxkbmap -layout 'us,ru' -option 'grp:alt_shift_toggle,grp_led:scroll' &
exec startlxqt

И для OpenBox (Runtu Linux) работающий вариант файла ~/.xinitrc следующий:
#!/bin/sh
pulseaudio &
setxkbmap -layout 'us,ru' -option 'grp:ctrl_shift_toggle,grp_led:scroll' &
exec openbox-session

exec startlxde

Универсальный файл ~/.xinitrc для любых рабочих столов можно найти на stackoverflow (необходима установка slim).

Диагностика

Перезагружаем ПК, который выполняет роль сервера.

Проверяем с него же, что сервер Xorg запускается без ошибок:

sudo Xorg :10 -auth .Xauthority -config xrdp/xorg.conf -noreset -nolisten tcp

На этом этапе экран может погаснуть, если вы проверяете XRDP с того же ПК, на котором запущена начальная сессия Xorg. Нужно нажать Ctrl+Alt+F1 ввести имя и пароль, при помощи команды ps -aux | grep xrdp найти номер процесса «sudo xrdp» и завершить его командой «sudo kill <номер процесса>«.

В текстовом выводе результата этой команды будет содержаться причина ошибки.

Если же сообщение «(EE) Cannot establish any listening sockets — Make sure an X server isn’t already running(EE)»,
нужно перезагрузить ПК и повторить диагностику.

Второй вариант проверки — перед первым подключением к серверу XRDP, завершаем текущий сеанс «Пуск» — «Выйти» — «Выйти из системы». Так как клиент RDP не сможет создать второй сеанс такого же пользователя (с ошибкой в файле ~/.xorgxrdp.10.log: «(EE) Caught signal 11 (Segmentation fault). Server aborting»).

Либо, нужно создать второго пользователя для тестирования подключения к xRDP, которым будем подключаться по протоколу RDP:

sudo useradd -m ivanov-rdp
passwd ivanov-rdp

Ошибки xRDP сервера в Linux и их решения

Настройка брандмауэра

При невозможности подключения по протоколу RDP к серверу, прежде всего проверить открытие порта на FireWall:

sudo apt install nmap
sudo nmap 192.168.55.100 -p 3389

где вместо 192.168.55.100 укажите IP-адрес сервера в локальной сети.
Не забываем открыть локальный порт 3389 в firewall:

sudo ufw allow 3389

Если порт открыт, то вывод:
PORT STATE SERVICE
3389/tcp open ms-wbt-server

Проблема «При подключении с клиента по RDP виден чёрный пустой экран»

На сервере не установлен пакет xorgxrdp — программная «прослойка» между xorg и rdp сервером, который отображает графику — Рабочий стол, указатель мыши и иконки.

Решение — установить на сервер пакет xorgxrdp:

sudo apt-get install xorgxrdp
sudo service xrdp restart

Сеанс xRDP теперь должен работать. Пробуем подключиться!

Примечание: Пакет «xorgxrdp — Remote Desktop Protocol (RDP) modules for X.org» входит в большинство дистрибутивов Debian, а также Ubuntu 18.04 «bionic», 20.04 LTS «focal», 21.04 «hirsute», 21.10 «impish», 22.04 LTS «jammy» (вышла 21.04.2022), и производных ОС на основе DEB-пакетной базы Ubuntu (таких как Runtu, Lubuntu, Xubuntu, Kubuntu и др.), а также дистрибутивы на основе RPM: Fedora, Arch и др.. Поэтому данная инструкция должна работать с множеством версий Linux.


Remmina RDP Client — подключение к серверу

sudo apt-get install remmina remmina-plugin-rdp remmina-plugin-secret
sudo reboot
remmina

Добавляем подключение — тип RDP.
remmina

Если VPN не используется, то в IP адрес вводим «белый» IP-адрес домашнего роутера.
При работе через VPN IP адрес относится к внутренней (локальной, домашней) сети.
Имя и пароль — такие же как при входе «с клавиатуры» на сервере.

Нижние кнопки окна Remmina на нетбуках с разрешением экрана 1024×600 пикселей могут быть обрезаны и видны частично.
«Отменить» — «Сохранить как значения по умолчанию» — «Сохранить» — «Подключиться» — «Сохранить и подключиться»

Нажимаем крайнюю правую кнопку «Сохранить и подключиться».

Различные проблемы

Журналы ошибок в системной каталоге /var/log/:

  • xrdp.log
  • xrdp-sesman.log
  • Xorg.0.log, Xorg.10.log

Журналы ошибок в каталоге пользователя ~:

  • ~/.xorgxrdp.10.log

Просмотреть их можно командами:

sudo cat /var/log/xrdp.log
sudo cat /var/log/xrdp-sesman.log
sudo cat /var/log/Xorg.0.log
sudo cat /var/log/Xorg.10.log
sudo cat ~/.xorgxrdp.log

Если при подключении с ПК под управлением Windows к ПК под управлением Linux после ввода имени пользователя пароля виден сине-зелёный однотонный фон без текста и иконок,
или в файле XRDP.LOG многочисленные ошибки, значит подключение произошло, но не запустилась графика Xorg — скорее всего из-за старой версии OpenGL, либо прав, см. выше.

Пример ошибки на стороне клиента при попытке подключения с помощью программы MSTSC.EXE:
blue

Сообщения об ошибка в журнале XRDP.LOG на стороне сервера:
error19
или аналогичная [DEBUG] Closed socket 17 (AF_UNIX)

Решение — диагностика командой с рабочего стола машины-сервера:

sudo Xorg :10 -auth .Xauthority -config xrdp/xorg.conf -noreset -nolisten tcp

Нужно добиться отсутствия ошибок Xorg в файле /var/log/Xorg.10.log.

Если при подключении с ПК под управлением Windows виден на мгновение чёрный экран, который тут же закрывается, один из вариантов:

  • неправильной имя/пароль пользователя
  • неправильный скрипт ~/.xinitrc (не запустилась сессия рабочего стола). Проверьте файл ~/.xinitrc на наличие команды exec <имя оболочки>.
  • пользователь, которым вы подключаетесь к ПК удалённо, имеет открытую сессию в операционной системе локально (использует компьютер в данный момент).

Безопасность

Теперь любой ПК в локальной сети сможет подключаться к вашему компьютеру по протоколу RDP. Следует установить для учётной записи пользователя сложный пароль. Если подключение к ПК из Интернет — можно дополнительно использовать VPN с шифрованием трафика.


Дата последнего редактирования 25.04.2022

Похожие публикации

Содержание

  1. Как установить Xrdp на Ubuntu 20.04
  2. Предпосылки
  3. Шаг 1: Установите Xrdp на Ubuntu 20.04
  4. Установите Xrdp на Ubuntu
  5. Шаг 2: Настройка Xrdp на Ubuntu 20.04
  6. Шаг 3: Доступ к удаленному рабочему столу Ubuntu с помощью RDP клиента
  7. Как исправить черный экран XRDP в Ubuntu
  8. Заключение
  9. ubuntu xrdp удаленный рабочий стол
  10. Как настроить xRDP-сервер на Ubuntu 18.04
  11. Что такое xRDP?
  12. Установка и настройка
  13. Подключение к рабочему столу
  14. Установка XRDP в Ubuntu 20.04
  15. Что такое XRDP
  16. Установка XRDP на Ubuntu 20.04
  17. Шаг 1. Поиск пакета
  18. Шаг 2. Обновление системы
  19. Шаг 3. Установка пакетов
  20. Шаг 3. Настройка службы XRDP
  21. Шаг 4. Поиск IP адреса
  22. Шаг 5. Проверка подключения
  23. Ошибка черный экран XRDP в Ubuntu
  24. Выводы
  25. Удаленный рабочий стол Ubuntu

Как установить Xrdp на Ubuntu 20.04

Xrdp — это аналог протокола Microsoft Remote Desktop Protocol (RDP). Если xrdp установлен в системе Linux, пользователи могут удаленно получить доступ к рабочему столу Linux с помощью RDP-клиента. Все это я покажу в этой статье. Его можно совершенно бесплатно скачать и использовать.

Без лишних слов давайте давайте приступим к установке Xrdp на Ubuntu Desktop 20.04 и 18.04.

Предпосылки

В этом руководстве предполагается, что у вас уже установлена Ubuntu 20.04 или Ubuntu 18.04. Если у вас есть минимальная установка без графического интерфейса – то рекомендуется установить среду рабочего стола или GNOME.

Чтобы установить среду рабочего стола Ubuntu, выполните команду:

Шаг 1: Установите Xrdp на Ubuntu 20.04

Для начала запустите терминал и выполните следующую команду для установки Xrdp в вашу систему.

Установите Xrdp на Ubuntu

Служба Xrdp запускается автоматически после установки. Для проверки работоспособности сервиса XRDP, выполнив команду:

Данные которые вы видите на рисунке подтверждают, что сервис XRDP работает.

Шаг 2: Настройка Xrdp на Ubuntu 20.04

При установке Xrdp ключ SSL сертификата ssl-cert-snakeoil. key помещается в папку /etc/ssl/private/. Нам требуется добавить пользователя xrdp в группу ssl-cert, чтобы сделать файл читаемым для пользователя. Это можно сделать командой:

Xrdp прослушивает порт 3389 и если вы находитесь за брандмауэром UFW, то вам нужно открыть порт. Это делается для того чтобы разрешить входящий трафик от клиентов RDP. В этом примере я разрешу трафик на порт 3389 из всей моей подсети в систему Ubuntu.

$ sudo ufw allow from 192.168.2.0/24 to any port 3389

После этого требуется перезагрузить брандмауэр и проверить, открыт ли порт.

Шаг 3: Доступ к удаленному рабочему столу Ubuntu с помощью RDP клиента

На этом шаге мы попробуем подключится к системе Ubuntu из Windows 10. В этом нам поможет стандартный клиент удаленного рабочего стола (RDP). Но прежде чем продолжить, убедитесь что вы вышли из Ubuntu 20.04. Так как Xrdp поддерживает только один Xsession.

В окне которое требует проверку удаленной системы, игнорируйте ошибки сертификата и нажмите на кнопку «Далее«.

proverka podlinnosti udalennoj sistemy ubuntuПроверка подлинности удаленной системы Ubuntu

На странице входа в систему Xrdp введите свои учетные данные и нажмите кнопку «Ok«.

vvedite svoi uchetnye dannye dlja v hoda v ubuntu cherez rdpВведите свои учетные данные для в хода в Ubuntu через RDP

Примечание: в этот момент Вы можете столкнуться с пустым черным экраном вместо фона рабочего стола Ubuntu. Лично я столкнулся с таким багом. После долгих мучений, я нашел вариант как исправить этот баг.

Как исправить черный экран XRDP в Ubuntu

Решение довольно простое. Откройте Ubuntu и отредактируйте /etc/xrdp/startwm.sh сценарий.

Добавьте эти строки непосредственно перед строками, которые тестируют и выполняют Xsession, как показано на скриншоте ниже.

unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR

Далее требуется сохранить файл и выйдите. Не забудьте перезапуститm службу Xrdp.

Затем повторно подключитесь. После первоначальной аутентификации вам потребуется пройти повторную аутентификацию, как показано на рисунке.

auntifikacija polzovateljaАутентификация пользователя XRDP

Введите свои учетные данные и нажмите кнопку «аутентификация«.После проделанного в перейдете на экран стола удаленной системы Ubuntu.

udalennyj dostup k rabochemu stolu ubuntuУдаленный Доступ К Рабочему Столу Ubuntu

Заключение

Ну вот и все, в этой статье вы узнали Как установить Xrdp на Ubuntu 20.04. Это совсем не сложно и это может сделать даже новичок Linux. Если у вас что-то не получилось или вы нашли ошибку, оставьте комментарий.

Источник

ubuntu xrdp удаленный рабочий стол

Проблемы со стандартным удаленным рабочим столом в Ubuntu 18.04: отсутствует подключение, черный экран, выкидывает при подключении и/или сообщения, типа «Could not acquire name on session bus».

Настройка удаленного рабочего стола в Убунту — лечение:

Удаление xrdp:
# sudo apt-get remove xrdp

Перегрузились:
# sudo reboot

Обновились:
# sudo apt-get update
# sudo apt-get upgrade

Установка xrdp:
# sudo apt-get install xrdp

Ставим mate-core — это рабочая среда MATE Desktop:
# sudo apt-get install mate-core

Добавляем конфиг:
# sudo echo mate-session>

Если запущен файрволл — добавляем исключение, принимать подключения на порт 3389 (по-умолчанию):
# sudo ufw allow 3389/tcp

Перегружаем:
# sudo reboot

И пробуем пользоваться удаленным рабочим столом. Но, бывает иногда и так, что этих шагов оказывается недостаточно.

Тогда ищем файл /etc/xrdd/startwm.sh и в нем комментируем строки (вероятно, будут последними):

и вместо них добавляем другие две строчки:

unset DBUS_SESSION_BUS_ADDRESS
exec mate-session

И пробуем еще раз. Уже должно все работать.

Дополнение.

Кстати, желательно — сменить порт 3389 по-умолчанию. Для этого необходимо редактировать файл /etc/xrdp/xrdp.ini. Найти строчку:

и поменять 3389 на новое значение. И не забыть при этом:

# sudo ufw allow НОВЫЙ_НОМЕР_ПОРТА/tcp

Кроме того, если удаленный рабочий стол ubuntu находится в локалке дома или другом безопасном месте, то можно упростить себе задачу и в окне авторизации оставить себе — набирать только пароль, забив имя пользователя в конфиге /etc/xrdp/xrdp.ini в секции [Xorg]:
username=имя_пользователя

Если же к компьютеру с удаленным рабочим столом есть доступ из Интернет, то запоминать имя пользователя — не стоит, это небезопасно. Злоумышленнику труднее будет подбирать пару неизвестных (логин/пароль), чем одно неизвестное (только лишь один пароль).

Max02.Ru Ubuntu RDP

ubuntu xrdp настройка удаленного рабочего стола mate-core

Источник

Как настроить xRDP-сервер на Ubuntu 18.04

В этой инструкции описано как настроить сервер xRDP для подключения к Ubuntu 18.04 с легковесным окружением Xfce по протоколу RDP. Это может быть очень удобно если вам нужно из Windows зайти на линукс систему используя графический интерфейс.

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

rocket img

cta

Установка и настройка

Подключитесь к вашему ubuntu серверу по протоколу SSH и выполните обновление системы:

sudo apt-get update

Установите и включите утилиту xRDP:

sudo apt-get install xrdp
sudo systemctl enable xrdp
sudo systemctl restart xrdp

xrdp1

Установите окружение xfce:

sudo apt-get install xfce4 xfce4-terminal

Откройте порт RDP для возможности удаленного подключения:

sudo ufw allow 3389/tcp

Перезагрузите xRDP сервер, чтобы изменения вступили в силу:

sudo /etc/init.d/xrdp restart

Подключение к рабочему столу

Если вы не знаете IP адрес Ubuntu сервера, его можно посмотреть введя команду:

xrdp2

В нашем случае это будет 10.0.0.2. Для подключения откройте приложение Windows Подключение к удаленному рабочему столу(mstsc.exe). Введите IP-адрес сервера и нажмите Подключить:

При подключении появится предупреждение безопасности. Нажмите Да:

xrdp4

В открывшемся окне в качестве сессии выборе Xorg, введите логин и пароль для пользователя, нажмите OK:

xrdp5

В результате произойдет подключение к рабочему столу.

Рабочий стол окружения Xfce:

xrdp6

Если при подключении к xrdp показывает черный экран необходимо зайти в папку /etc/xrdp, и внести изменения в файл startwm.sh.

sudo nano /etc/xrdp/startwm.sh

unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR

test –x /etc/X11/Xsession && exec /etc/X11/Xsession

xrdp7

После внесения изменений необходимо перезапустить службу XRDP:

sudo systemctl restart xrdp

Теперь можно снова запустить mstsc.exe и подключиться к нашему ubuntu серверу.

Источник

Установка XRDP в Ubuntu 20.04

В настоящее время существует множество вариантов удалённого подключения к рабочим местам. Кроме того, стоимость аренды виртуальной машины хорошей производительности в облаке в месяц, сопоставима с ценой кружки хорошего кофе. Такие удалённые виртуальные машины удобно использовать с офисных слабых компьютеров, из поездок с ноутбуком и слабым Интернет-соединением, запускать на них длительные задачи, как например перепроведение документов в 1С, скачивание больших файлов.

Ещё можно организовать общий сервер на базе Ubuntu 20.04 в облаке или на мощном компьютере и совместно использовать его ресурсы с помощью удалённого доступа. В этой статье мы рассмотрим как выполняется установка XRDP Ubuntu 20.04.

Что такое XRDP

XRDP – это реализация протокола удалённого рабочего стола Microsoft (RDP) с открытым исходным кодом, которая позволяет графически управлять удалённой системой.

В отличие от коммерческого продукта, XRDP в Linux позволяет работать одновременно с одним компьютером или виртуальной машиной неограниченному числу пользователей, что позволяет активно использовать XRDP для разворачивания терминальных серверов на базе Ubuntu 20.04.

Установка XRDP на Ubuntu 20.04

Шаг 1. Поиск пакета

В Ubuntu 20.04 можно получить установить программу с помощью утилиты apt. Давайте установим XRDP из репозитория Ubuntu 20.04. Для этого, с помощью терминала, вы можете проверить, есть ли пакет xrdp в хранилище пакетов Ubuntu 20.04:

sudo apt searh xrdp

ustanovka xrdp v ubuntu 20.04 1

Шаг 2. Обновление системы

Такой пакет есть, поэтому вы можете, предварительно обновив систему, простым путём установить xrdp на Ubuntu 20.04. Обновляем и перезагружаем для принятия изменений в ОС:

sudo apt –y update && sudo apt –y upgrade && sudo reboot

ustanovka xrdp v ubuntu 20.04 2

Шаг 3. Установка пакетов

После перезагрузки можно устанавливать XRDP из репозитория Ubuntu 20.04

sudo apt install xrdp

Обращаю внимание, что при установке генерируется сертификат, который необходим для функционирования RDP протокола, строка ниже указывает, что сертификат успешно создан:

ustanovka xrdp v ubuntu 20.04 3

Шаг 3. Настройка службы XRDP

В связи с особенностями системы Ubuntu 20.04, необходимо ввести пользователя xrdp, от имени которого работает XRDP в системе, в группу ssl-cert. Выполните команду:

sudo adduser xrdp ssl-cert

Затем добавьте службу xrdp в автозапуск и перезапустите её для применения изменений:

sudo systemct enable xrdp

sudo systemctl restart xrdp

ustanovka xrdp v ubuntu 20.04 4

sudo systemctl status xrdp

Если результат выполнения команды выглядит так, как на скриншоте, то все прошло успешно. В финале предоставьте доступ из внешней сети к порту 3389 в файрволле Ubuntu 20.04:

sudo ufw allow from 192.168.2.0/24 to any port 3389

sudo ufw allow 3389

Шаг 4. Поиск IP адреса

С помощью любого клиента RDP можно подключаться по имени компьютера, возможно для этого нужно дополнительно настроить DNS. Лучше получить доступ по IP-адресу сервера, на котором установлен XRDP. Чтобы узнать IP-адрес, необходимо в терминале ввести команду:

ustanovka xrdp v ubuntu 20.04 5

На моём скриншоте обведён IP-адрес виртуальной машины с Ubuntu 20.04, который автоматически присвоен сетевому интерфейсу eth1. Сетевых интерфейсов может быть несколько, у каждого из них могут быть свои IP-адреса, к которым так же можно подключаться по RDP.

Шаг 5. Проверка подключения

На скриншоте ниже можно видеть окно для входа Xorg, куда требуется ввести логин, в моем случае user и пароль, в моем случае 1. Для смены раскладки клавиатуры в Ubuntu 20.04 используется комбинация клавиш Super+Пробел (с моей клавиатуры клавиши Windows + Пробел). Если в окне раскладка не меняется, и вводится пароль не на том языке, то необходимо отключить клиент RDP, закрыть его, поменять язык в Windows на нужный и снова подключиться к удалённой машине.

ustanovka xrdp v ubuntu 20.04 6

Настройка XRDP Ubuntu 20.04 практически завершена.

Ошибка черный экран XRDP в Ubuntu

ustanovka xrdp v ubuntu 20.04 7

Для исправления такой ошибки необходимо внести изменение в файл, расположенный в папке /etc/xrdp, запускающий каждую сессию удалённого доступа XRDP с именем startwm.sh:

ustanovka xrdp v ubuntu 20.04 8

Внесите изменения в файле startwm.sh:

unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR

test –x /etc/X11/Xsession && exec /etc/X11/Xsession

как показано на скриншоте. Это обнуляет системные переменные, сформированные предыдущими сеансами. В результате, мы избавляемся от чёрного экрана при подключении по RDP к Ubuntu 20.04

ustanovka xrdp v ubuntu 20.04 9

После внесения изменений необходимо перезапустить службу XRDP:

sudo systemctl restart xrd

И можно выполнить подключение к Ubuntu по RDP:

ustanovka xrdp v ubuntu 20.04 10

ustanovka xrdp v ubuntu 20.04 12

Выводы

Сегодня мы выяснили как подключиться к Ubuntu по RDP и настроить XRDP сервер. Клиенты RDP существуют для любого устройства: телефона, планшета, ноутбука, любого компьютера. Местонахождение этой виртуальной или реальной машины с Ubuntu 20.04 теперь не играет никакой роли, лишь бы был доступ к ней через интернет и установлен и настроен XRDP.

Источник

Удаленный рабочий стол Ubuntu

Доброго времени суток дорогие читатели. Ранее я писал о подключении к удаленному рабочему столу Linux. В примере использовалось подключение рабочих столов KDE и XFCE. Сегодня рассмотрим как подключить удаленный рабочий стол Ubuntu который установлен в системе.

Подключиться к рабочему столу Ubuntu можно с использованием VNC либо RDP. Я выбрал второй, благодаря тому что RDP клиент установлен во всех WIndows системах он очень популярен. Для подключения к Ubuntu по RDP необходимо установить ПО XRDP.
Тестировать подключение к рабочему столу я буду на Ubuntu 20.04. Пакет XRDP также последний на данный момент.

Установка XRDP

Установка XRDP на Ubuntu делается командой

В процессе установки будет автоматически сгенерирован сертификат для шифрования RDP соединения.

Надпись ssl_gen_key_xrdp ok свидетельствует о том что процесс генерации сертификата прошел успешно.

Добавим сервис xrdp в автозагрузку

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

Статус active говорит о том что сервис запущен и работает.

Настройка XRDP
Настроим брандмауэр

Необходимо открыть порт в брандмауэре. Давайте проверим включен ли он вообще

Если status указан inactive советую включить брандмауэр. Делается это командой

Только будьте осторожны если подключены удаленно, например по SSH, т.к. порт может быть закрыт.

По умолчанию протокол RDP использует порт 3389. Откроем данный порт используя брандмауэр UFW

Теперь любой клиент из подсети 172.16.169.0 сможет подключиться к Ubuntu используя протокол RDP.

Попросим брандмауэр перечитать правила доступа для применения настроек

Посмотрим статус UFW

Разрешим использовать сертификат

Добавим пользователя xrdp в группу ssl-cert для возможности использования ранее созданного сертификата.

Перезапустим xrdp чтобы применить изменения

Подключение к рабочему столу Ubuntu

Проверим подключение к рабочему столу Ubuntu используя встроенный в Windows клиент удаленного рабочего стола.

Для подключения нам потребуется имя сервера, либо IP адрес и логин/пароль для входа. Узнать IP адрес в Ubuntu можно так

Переходим к подключению. Запустим клиент удаленного рабочего стола, в Windows он называется: Подключение к удаленному рабочему столу. Вводим IP адрес и нажимаем Подключить

Система будет выводить предупреждения и возможно задавать вопросы, со всем соглашаемся. И в открывшемся окне вводим Username и Password от входа в Ubuntu.

login

Смена раскладки клавиатуры происходит клавишами Windows+Пробел. Если раскладка не меняется, необходимо закрыть окно Удаленного подключения, поменять раскладку и снова подключиться.

С большей долей вероятности при первом подключении будет черный экран. Как это исправить читаем далее.

Источник

Hi @matt335672, thanks for the reply. I did see some info regarding being logged in at the console. I tried logging out, and also following the wiki entry, but I’m still having the same issue. I then did what you asked, and here are the results:

date: Wed Jun 17 15:55:36 EDT 2020

Tried logging in over RDP, then here are the results of the command:

-- Logs begin at Wed 2020-04-01 13:23:43 EDT, end at Wed 2020-06-17 15:57:17 EDT. --
Jun 17 15:55:40 ubuntu dbus-daemon[17287]: [session uid=122 pid=17285] Activating service name='org.freedesktop.Noti>
Jun 17 15:55:40 ubuntu dbus-daemon[17287]: [session uid=122 pid=17285] Activating service name='org.xfce.Xfconf' req>
Jun 17 15:55:40 ubuntu dbus-daemon[17287]: [session uid=122 pid=17285] Successfully activated service 'org.xfce.Xfco>
Jun 17 15:55:40 ubuntu dbus-daemon[17287]: [session uid=122 pid=17285] Successfully activated service 'org.freedeskt>
Jun 17 15:55:41 ubuntu xrdp[1389]: (1389)(281473264242704)[INFO ] Socket 12: AF_INET6 connection received from ::fff>
Jun 17 15:55:41 ubuntu xrdp[1389]: (1389)(281473264242704)[DEBUG] Closed socket 12 (AF_INET6 ::ffff:192.168.1.226 po>
Jun 17 15:55:41 ubuntu xrdp[18426]: (18426)(281473264242704)[DEBUG] Closed socket 11 (AF_INET6 :: port 3389)
Jun 17 15:55:41 ubuntu xrdp[18426]: (18426)(281473264242704)[INFO ] Using default X.509 certificate: /etc/xrdp/cert.>
Jun 17 15:55:41 ubuntu xrdp[18426]: (18426)(281473264242704)[INFO ] Using default X.509 key file: /etc/xrdp/key.pem
Jun 17 15:55:41 ubuntu xrdp[18426]: (18426)(281473264242704)[ERROR] Cannot read private key file /etc/xrdp/key.pem: >
Jun 17 15:55:41 ubuntu xrdp[18426]: (18426)(281473264242704)[DEBUG] TLSv1.3 enabled
Jun 17 15:55:41 ubuntu xrdp[18426]: (18426)(281473264242704)[DEBUG] TLSv1.2 enabled
Jun 17 15:55:41 ubuntu xrdp[18426]: (18426)(281473264242704)[DEBUG] Security layer: requested 11, selected 0
Jun 17 15:55:41 ubuntu xrdp[18426]: (18426)(281473264242704)[DEBUG] Closed socket 12 (AF_INET6 ::ffff:192.168.1.226 >
Jun 17 15:55:42 ubuntu xrdp[1389]: (1389)(281473264242704)[INFO ] Socket 12: AF_INET6 connection received from ::fff>
Jun 17 15:55:42 ubuntu xrdp[1389]: (1389)(281473264242704)[DEBUG] Closed socket 12 (AF_INET6 ::ffff:192.168.1.226 po>
Jun 17 15:55:42 ubuntu xrdp[18427]: (18427)(281473264242704)[DEBUG] Closed socket 11 (AF_INET6 :: port 3389)
Jun 17 15:55:42 ubuntu xrdp[18427]: (18427)(281473264242704)[INFO ] Using default X.509 certificate: /etc/xrdp/cert.>
Jun 17 15:55:42 ubuntu xrdp[18427]: (18427)(281473264242704)[INFO ] Using default X.509 key file: /etc/xrdp/key.pem
Jun 17 15:55:42 ubuntu xrdp[18427]: (18427)(281473264242704)[ERROR] Cannot read private key file /etc/xrdp/key.pem: >
Jun 17 15:55:42 ubuntu xrdp[18427]: (18427)(281473264242704)[DEBUG] TLSv1.3 enabled
Jun 17 15:55:42 ubuntu xrdp[18427]: (18427)(281473264242704)[DEBUG] TLSv1.2 enabled
Jun 17 15:55:42 ubuntu xrdp[18427]: (18427)(281473264242704)[DEBUG] Security layer: requested 0, selected 0
Jun 17 15:55:42 ubuntu xrdp[18427]: (18427)(281473264242704)[INFO ] connected client computer name: PAULRYZEN
Jun 17 15:55:42 ubuntu xrdp[18427]: (18427)(281473264242704)[INFO ] adding channel item name rdpdr chan_id 1004 flag>
Jun 17 15:55:42 ubuntu xrdp[18427]: (18427)(281473264242704)[INFO ] adding channel item name rdpsnd chan_id 1005 fla>
Jun 17 15:55:42 ubuntu xrdp[18427]: (18427)(281473264242704)[INFO ] adding channel item name cliprdr chan_id 1006 fl>
Jun 17 15:55:42 ubuntu xrdp[18427]: (18427)(281473264242704)[INFO ] adding channel item name drdynvc chan_id 1007 fl>
Jun 17 15:55:42 ubuntu xrdp[18427]: (18427)(281473264242704)[INFO ] Non-TLS connection established from ::ffff:192.1>
Jun 17 15:55:42 ubuntu xrdp[18427]: (18427)(281473264242704)[DEBUG] xrdp_000047fb_wm_login_mode_event_00000001
Jun 17 15:55:42 ubuntu xrdp[18427]: (18427)(281473264242704)[INFO ] Loading keymap file /etc/xrdp/km-00000409.ini
Jun 17 15:55:42 ubuntu xrdp[18427]: (18427)(281473264242704)[WARN ] local keymap file for 0x00000409 found and doesn>
Jun 17 15:55:42 ubuntu xrdp[18427]: (18427)(281473264242704)[DEBUG] xrdp_wm_log_msg: connecting to sesman ip 127.0.0>
Jun 17 15:55:42 ubuntu xrdp-sesman[1353]: (1353)(281473614072064)[INFO ] A connection received from ::1 port 37930
Jun 17 15:55:42 ubuntu xrdp[18427]: (18427)(281473264242704)[INFO ] xrdp_wm_log_msg: sesman connect ok
Jun 17 15:55:42 ubuntu xrdp[18427]: (18427)(281473264242704)[DEBUG] xrdp_wm_log_msg: sending login info to session m>
Jun 17 15:55:42 ubuntu xrdp[18427]: (18427)(281473264242704)[DEBUG] return value from xrdp_mm_connect 0
Jun 17 15:55:42 ubuntu xrdp-sesman[1353]: pam_unix(xrdp-sesman:auth): Couldn't open /etc/securetty: No such file or >
Jun 17 15:55:42 ubuntu xrdp-sesman[1353]: pam_unix(xrdp-sesman:auth): Couldn't open /etc/securetty: No such file or >
Jun 17 15:55:42 ubuntu xrdp-sesman[1353]: (1353)(281473614072064)[INFO ] ++ created session (access granted): userna>
Jun 17 15:55:42 ubuntu xrdp-sesman[1353]: (1353)(281473614072064)[INFO ] starting Xorg session...
Jun 17 15:55:42 ubuntu xrdp-sesman[1353]: (1353)(281473614072064)[DEBUG] Closed socket 9 (AF_INET6 :: port 5910)
Jun 17 15:55:42 ubuntu xrdp-sesman[1353]: (1353)(281473614072064)[DEBUG] Closed socket 9 (AF_INET6 :: port 6010)
Jun 17 15:55:42 ubuntu xrdp-sesman[1353]: (1353)(281473614072064)[DEBUG] Closed socket 9 (AF_INET6 :: port 6210)
Jun 17 15:55:42 ubuntu xrdp[18427]: (18427)(281473264242704)[INFO ] xrdp_wm_log_msg: login successful for display 10
Jun 17 15:55:42 ubuntu xrdp-sesman[1353]: (1353)(281473614072064)[DEBUG] Closed socket 8 (AF_INET6 ::1 port 3350)
Jun 17 15:55:42 ubuntu xrdp-sesman[18428]: (18428)(281473614072064)[INFO ] calling auth_start_session from pid 18428
Jun 17 15:55:42 ubuntu xrdp[18427]: (18427)(281473264242704)[DEBUG] xrdp_wm_log_msg: started connecting
Jun 17 15:55:42 ubuntu xrdp-sesman[18428]: pam_unix(xrdp-sesman:session): session opened for user ubuntu by (uid=0)
Jun 17 15:55:42 ubuntu systemd-logind[1273]: New session c7 of user ubuntu.
Jun 17 15:55:42 ubuntu systemd[1]: Started Session c7 of user ubuntu.
Jun 17 15:55:42 ubuntu xrdp-sesman[18428]: (18428)(281473614072064)[DEBUG] Closed socket 7 (AF_INET6 ::1 port 3350)
Jun 17 15:55:42 ubuntu xrdp-sesman[18428]: (18428)(281473614072064)[DEBUG] Closed socket 8 (AF_INET6 ::1 port 3350)
Jun 17 15:55:42 ubuntu xrdp-sesman[18430]: (18430)(281473614072064)[INFO ] /usr/lib/xorg/Xorg :10 -auth .Xauthority >
Jun 17 15:55:42 ubuntu xrdp[18427]: (18427)(281473264242704)[INFO ] lib_mod_log_peer: xrdp_pid=18427 connected to X1>
Jun 17 15:55:42 ubuntu xrdp[18427]: (18427)(281473264242704)[DEBUG] xrdp_wm_log_msg: connected ok
Jun 17 15:55:42 ubuntu xrdp-sesman[18428]: (18428)(281473614072064)[CORE ] waiting for window manager (pid 18429) to>
Jun 17 15:55:42 ubuntu xrdp[18427]: (18427)(281473264242704)[DEBUG] xrdp_mm_connect_chansrv: chansrv connect success>
Jun 17 15:55:42 ubuntu xrdp[18427]: (18427)(281473264242704)[DEBUG] Closed socket 16 (AF_INET6 ::1 port 37930)
Jun 17 15:55:43 ubuntu dbus-daemon[18477]: [session uid=1000 pid=18475] AppArmor D-Bus mediation is enabled

For reference, I’ll my sesman.log, xrdp.log, and .xorgxrdp.10.log:

xrdp.log:

[20190108-04:26:43] [INFO ] Socket 12: AF_VSOCK connection received from cid: -1 port: -2147483641
[20190108-04:26:43] [DEBUG] Closed socket 12 (AF_VSOCK cid -1 port 3389)
[20190108-04:26:43] [DEBUG] Closed socket 11 (AF_VSOCK cid -1 port 3389)
[20190108-04:26:43] [INFO ] Using default X.509 certificate: /etc/xrdp/cert.pem
[20190108-04:26:43] [INFO ] Using default X.509 key file: /etc/xrdp/key.pem
[20190108-04:26:43] [ERROR] Cannot read private key file /etc/xrdp/key.pem: No such file or directory
[20190108-04:26:43] [DEBUG] TLSv1.2 enabled
[20190108-04:26:43] [DEBUG] TLSv1.1 enabled
[20190108-04:26:43] [DEBUG] TLSv1 enabled
[20190108-04:26:43] [DEBUG] Security layer: requested 11, selected 0
[20190108-04:26:43] [DEBUG] Closed socket 12 (AF_VSOCK cid -1 port 3389)
[20190108-04:26:43] [INFO ] Socket 12: AF_VSOCK connection received from cid: -1 port: -2147483640
[20190108-04:26:43] [DEBUG] Closed socket 12 (AF_VSOCK cid -1 port 3389)
[20190108-04:26:43] [DEBUG] Closed socket 11 (AF_VSOCK cid -1 port 3389)
[20190108-04:26:43] [INFO ] Using default X.509 certificate: /etc/xrdp/cert.pem
[20190108-04:26:43] [INFO ] Using default X.509 key file: /etc/xrdp/key.pem
[20190108-04:26:43] [ERROR] Cannot read private key file /etc/xrdp/key.pem: No such file or directory
[20190108-04:26:43] [DEBUG] TLSv1.2 enabled
[20190108-04:26:43] [DEBUG] TLSv1.1 enabled
[20190108-04:26:43] [DEBUG] TLSv1 enabled
[20190108-04:26:43] [DEBUG] Security layer: requested 0, selected 0
[20190108-04:26:43] [INFO ] connected client computer name: DESKTOP-Q5BLN8V
[20190108-04:26:43] [INFO ] Non-TLS connection established from -1 port -2147483640: encrypted with standard RDP security
[20190108-04:26:43] [DEBUG] xrdp_00002271_wm_login_mode_event_00000001
[20190108-04:26:43] [INFO ] Cannot find keymap file /etc/xrdp/km-a0000409.ini
[20190108-04:26:43] [INFO ] Loading keymap file /etc/xrdp/km-00000409.ini
[20190108-04:26:43] [WARN ] local keymap file for 0xa0000409 found and doesn't match built in keymap, using local keymap file
[20190108-04:26:52] [DEBUG] xrdp_wm_log_msg: connecting to sesman ip 127.0.0.1 port 3350
[20190108-04:26:53] [INFO ] xrdp_wm_log_msg: sesman connect ok
[20190108-04:26:53] [DEBUG] xrdp_wm_log_msg: sending login info to session manager, please wait...
[20190108-04:26:53] [DEBUG] return value from xrdp_mm_connect 0
[20190108-04:26:53] [INFO ] xrdp_wm_log_msg: login successful for display 10
[20190108-04:26:53] [DEBUG] xrdp_wm_log_msg: started connecting
[20190108-04:26:57] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:27:00] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:27:04] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:27:07] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:27:11] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:27:14] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:27:18] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:27:21] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:27:25] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:27:28] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:27:32] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:27:35] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:27:39] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:27:42] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:27:46] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:27:49] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:27:53] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:27:56] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:28:00] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:28:03] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:28:07] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:28:10] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:28:14] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:28:18] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:28:21] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:28:25] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:28:28] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:28:32] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:28:35] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:28:39] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:28:42] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:28:46] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:28:49] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:28:53] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:28:56] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:29:00] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:29:03] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:29:07] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:29:10] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:29:14] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:29:17] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:29:21] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:29:24] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:29:28] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:29:31] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:29:35] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:29:38] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:29:42] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:29:45] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:29:49] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:29:52] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:29:56] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:30:00] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:30:03] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:30:07] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:30:10] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:30:14] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:30:17] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:30:21] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:30:24] [DEBUG] xrdp_wm_log_msg: connection problem, giving up
[20190108-04:30:24] [DEBUG] Closed socket 23 (AF_UNIX)
[20190108-04:30:24] [DEBUG] xrdp_wm_log_msg: some problem
[20190108-04:30:24] [DEBUG] xrdp_mm_module_cleanup
[20190108-04:30:24] [DEBUG] Closed socket 22 (AF_INET6 ::1 port 59540)

xrdp-sesman.log

[20190108-04:45:00] [INFO ] shutting down sesman 1
[20190108-04:45:00] [DEBUG] Closed socket 7 (AF_INET6 ::1 port 3350)
[20190108-04:45:01] [DEBUG] libscp initialized
[20190108-04:45:01] [DEBUG] Testing if xrdp-sesman can listen on 127.0.0.1 port 3350.
[20190108-04:45:01] [INFO ] starting xrdp-sesman with pid 1230
[20190108-04:45:01] [DEBUG] Closed socket 5 (AF_INET6 ::1 port 3350)
[20190108-04:45:01] [INFO ] listening to port 3350 on 127.0.0.1
[20190108-04:45:12] [INFO ] A connection received from ::1 port 39142
[20190108-04:45:13] [INFO ] ++ created session (access granted): username merit, ip NULL:NULL - socket: 12
[20190108-04:45:13] [INFO ] starting Xorg session...
[20190108-04:45:13] [DEBUG] Closed socket 9 (AF_INET6 :: port 5910)
[20190108-04:45:13] [DEBUG] Closed socket 9 (AF_INET6 :: port 6010)
[20190108-04:45:13] [DEBUG] Closed socket 9 (AF_INET6 :: port 6210)
[20190108-04:45:13] [DEBUG] Closed socket 8 (AF_INET6 ::1 port 3350)
[20190108-04:45:13] [INFO ] calling auth_start_session from pid 1402
[20190108-04:45:13] [DEBUG] Closed socket 7 (AF_INET6 ::1 port 3350)
[20190108-04:45:13] [DEBUG] Closed socket 8 (AF_INET6 ::1 port 3350)
[20190108-04:45:13] [INFO ] /usr/lib/xorg/Xorg :10 -auth .Xauthority -config xrdp/xorg.conf -noreset -nolisten tcp -logfile .xorgxrdp.%s.log
[20190108-04:45:13] [CORE ] waiting for window manager (pid 1415) to exit
[20190108-04:45:14] [CORE ] window manager (pid 1415) did exit, cleaning up session
[20190108-04:45:14] [INFO ] calling auth_stop_session and auth_end from pid 1402
[20190108-04:45:14] [DEBUG] cleanup_sockets:
[20190108-04:45:14] [DEBUG] cleanup_sockets: deleting /var/run/xrdp/sockdir/xrdp_chansrv_audio_out_socket_10
[20190108-04:45:14] [DEBUG] cleanup_sockets: deleting /var/run/xrdp/sockdir/xrdp_chansrv_audio_in_socket_10
[20190108-04:45:14] [DEBUG] cleanup_sockets: deleting /var/run/xrdp/sockdir/xrdpapi_10

.xorg.xrdp.10.log

[    18.056]
X.Org X Server 1.19.6
Release Date: 2017-12-20
[    18.056] X Protocol Version 11, Revision 0
[    18.056] Build Operating System: Linux 4.4.0-138-generic x86_64 Ubuntu
[    18.056] Current Operating System: Linux mvm 4.15.0-43-generic #46-Ubuntu SMP Thu Dec 6 14:45:28 UTC 2018 x86_64
[    18.056] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.15.0-43-generic root=/dev/sda1 ro quiet splash vt.handoff=1
[    18.056] Build Date: 25 October 2018  04:11:27PM
[    18.056] xorg-server 2:1.19.6-1ubuntu4.2 (For technical support please see http://www.ubuntu.com/support)
[    18.056] Current version of pixman: 0.34.0
[    18.056]    Before reporting problems, check http://wiki.x.org
        to make sure that you have the latest version.
[    18.056] Markers: (--) probed, (**) from config file, (==) default setting,
        (++) from command line, (!!) notice, (II) informational,
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[    18.056] (++) Log file: ".xorgxrdp.10.log", Time: Tue Jan  8 04:45:13 2019
[    18.059] (++) Using config file: "/etc/X11/xrdp/xorg.conf"
[    18.059] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
[    18.061] (==) ServerLayout "X11 Server"
[    18.061] (**) |-->Screen "Screen (xrdpdev)" (0)
[    18.061] (**) |   |-->Monitor "Monitor"
[    18.062] (**) |   |-->Device "Video Card (xrdpdev)"
[    18.062] (**) |-->Input Device "xrdpMouse"
[    18.062] (**) |-->Input Device "xrdpKeyboard"
[    18.062] (**) Option "DontVTSwitch" "on"
[    18.062] (**) Option "AutoAddDevices" "off"
[    18.062] (**) Not automatically adding devices
[    18.062] (==) Automatically enabling devices
[    18.062] (==) Automatically adding GPU devices
[    18.062] (==) Automatically binding GPU devices
[    18.062] (==) Max clients allowed: 256, resource mask: 0x1fffff
[    18.066] (WW) The directory "/usr/share/fonts/X11/cyrillic" does not exist.
[    18.066]    Entry deleted from font path.
[    18.066] (WW) The directory "/usr/share/fonts/X11/100dpi/" does not exist.
[    18.066]    Entry deleted from font path.
[    18.066] (WW) The directory "/usr/share/fonts/X11/75dpi/" does not exist.
[    18.066]    Entry deleted from font path.
[    18.066] (WW) The directory "/usr/share/fonts/X11/100dpi" does not exist.
[    18.066]    Entry deleted from font path.
[    18.066] (WW) The directory "/usr/share/fonts/X11/75dpi" does not exist.
[    18.066]    Entry deleted from font path.
[    18.066] (==) FontPath set to:
        /usr/share/fonts/X11/misc,
        /usr/share/fonts/X11/Type1,
        built-ins
[    18.066] (==) ModulePath set to "/usr/lib/xorg/modules"
[    18.067] (II) Loader magic: 0x560c25146020
[    18.067] (II) Module ABI versions:
[    18.067]    X.Org ANSI C Emulation: 0.4
[    18.067]    X.Org Video Driver: 23.0
[    18.067]    X.Org XInput driver : 24.1
[    18.067]    X.Org Server Extension : 10.0
[    18.073] (II) systemd-logind: took control of session /org/freedesktop/login1/session/c1
[    18.074] (II) no primary bus or device found
[    18.074] (II) "glx" will be loaded. This was enabled by default and also specified in the config file.
[    18.074] (II) LoadModule: "dbe"
[    18.074] (II) Module "dbe" already built-in
[    18.074] (II) LoadModule: "ddc"
[    18.074] (II) Module "ddc" already built-in
[    18.074] (II) LoadModule: "extmod"
[    18.074] (II) Module "extmod" already built-in
[    18.074] (II) LoadModule: "glx"
[    18.076] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[    18.087] (II) Module glx: vendor="X.Org Foundation"
[    18.087]    compiled for 1.19.6, module version = 1.0.0
[    18.087]    ABI class: X.Org Server Extension, version 10.0
[    18.087] (II) LoadModule: "int10"
[    18.087] (II) Loading /usr/lib/xorg/modules/libint10.so
[    18.088] (II) Module int10: vendor="X.Org Foundation"
[    18.088]    compiled for 1.19.6, module version = 1.0.0
[    18.088]    ABI class: X.Org Video Driver, version 23.0
[    18.088] (II) LoadModule: "record"
[    18.088] (II) Module "record" already built-in
[    18.088] (II) LoadModule: "vbe"
[    18.089] (II) Loading /usr/lib/xorg/modules/libvbe.so
[    18.089] (II) Module vbe: vendor="X.Org Foundation"
[    18.089]    compiled for 1.19.6, module version = 1.1.0
[    18.089]    ABI class: X.Org Video Driver, version 23.0
[    18.089] (II) LoadModule: "xorgxrdp"
[    18.090] (II) Loading /usr/lib/xorg/modules/libxorgxrdp.so
[    18.091] (II) Module XORGXRDP: vendor="X.Org Foundation"
[    18.091]    compiled for 1.19.6, module version = 1.0.0
[    18.091]    ABI class: X.Org Video Driver, version 23.0
[    18.091] xorgxrdpSetup:
[    18.091] (II) LoadModule: "fb"
[    18.091] (II) Loading /usr/lib/xorg/modules/libfb.so
[    18.092] (II) Module fb: vendor="X.Org Foundation"
[    18.092]    compiled for 1.19.6, module version = 1.0.0
[    18.092]    ABI class: X.Org ANSI C Emulation, version 0.4
[    18.092] (II) LoadModule: "xrdpdev"
[    18.092] (II) Loading /usr/lib/xorg/modules/drivers/xrdpdev_drv.so
[    18.093] (II) Module XRDPDEV: vendor="X.Org Foundation"
[    18.093]    compiled for 1.19.6, module version = 1.0.0
[    18.093]    ABI class: X.Org Video Driver, version 23.0
[    18.093] xrdpdevSetup:
[    18.093] (II) LoadModule: "xrdpmouse"
[    18.093] (II) Loading /usr/lib/xorg/modules/input/xrdpmouse_drv.so
[    18.093] (II) Module XRDPMOUSE: vendor="X.Org Foundation"
[    18.093]    compiled for 1.19.6, module version = 1.0.0
[    18.093]    Module class: X.Org XInput Driver
[    18.093]    ABI class: X.Org XInput driver, version 24.1
[    18.093] rdpmousePlug:
[    18.093] (II) LoadModule: "xrdpkeyb"
[    18.094] (II) Loading /usr/lib/xorg/modules/input/xrdpkeyb_drv.so
[    18.094] (II) Module XRDPKEYB: vendor="X.Org Foundation"
[    18.094]    compiled for 1.19.6, module version = 1.0.0
[    18.094]    Module class: X.Org XInput Driver
[    18.094]    ABI class: X.Org XInput driver, version 24.1
[    18.094] rdpkeybPlug:
[    18.094] rdpIdentify:
[    18.094] (II) XRDPDEV: driver for xrdp: XRDPDEV
[    18.094] rdpDriverFunc: op 10
[    18.094] (WW) Falling back to old probe method for XRDPDEV
[    18.094] rdpProbe:
[    18.094] (II) Loading sub module "fb"
[    18.094] (II) LoadModule: "fb"
[    18.094] (II) Loading /usr/lib/xorg/modules/libfb.so
[    18.094] (II) Module fb: vendor="X.Org Foundation"
[    18.094]    compiled for 1.19.6, module version = 1.0.0
[    18.094]    ABI class: X.Org ANSI C Emulation, version 0.4
[    18.094] (II) XRDPDEV(0): using default device
[    18.094] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support
[    18.094] rdpPreInit:
[    18.094] (**) XRDPDEV(0): Depth 24, (--) framebuffer bpp 32
[    18.094] (==) XRDPDEV(0): RGB weight 888
[    18.094] (==) XRDPDEV(0): Using gamma correction (1.0, 1.0, 1.0)
[    18.094] (==) XRDPDEV(0): Default visual is TrueColor
[    18.094] (==) XRDPDEV(0): DPI set to (96, 96)
[    18.094] (II) XRDPDEV(0):   mode "640x480" ok
[    18.094] (II) XRDPDEV(0):   mode "800x600" ok
[    18.094] (--) XRDPDEV(0): Virtual size is 800x600 (pitch 800)
[    18.094] (**) XRDPDEV(0):  Default mode "800x600": 36.0 MHz (scaled from 0.0 MHz), 35.2 kHz, 56.2 Hz
[    18.094] (II) XRDPDEV(0): Modeline "800x600"x0.0   36.00  800 824 896 1024  600 601 603 625 +hsync +vsync (35.2 kHz d)
[    18.094] (==) Depth 24 pixmap format is 32 bpp
[    18.095] rdpScreenInit: virtualX 800 virtualY 600 rgbBits 8 depth 24
[    18.095] rdpScreenInit: pfbMemory bytes 1920000
[    18.095] rdpScreenInit: pfbMemory 0x7f5697253010
[    18.095] rdpSimdInit: assigning yuv functions
[    18.095] rdpSimdInit: cpuid ax 1 cx 0 return ax 0x00050654 bx 0x00200800 cx 0xfeda3203 dx 0x1f8bfbff
[    18.095] rdpSimdInit: sse2 amd64 yuv functions assigned
[    18.095] rdpXvInit: depth 24
[    18.096] (==) XRDPDEV(0): Backing store enabled
[    18.097] rdpClientConInit: kill disconnected [0] timeout [0] sec
[    18.097]
[    18.097] rdpScreenInit: out
[    18.097] (==) RandR enabled
[    18.101] (II) SELinux: Disabled on system
[    18.102] (II) AIGLX: Screen 0 is not DRI2 capable
[    18.102] (EE) AIGLX: reverting to software rendering
[    18.223] (II) IGLX: enabled GLX_MESA_copy_sub_buffer
[    18.224] (II) IGLX: Loaded and initialized swrast
[    18.224] (II) GLX: Initialized DRISWRAST GL provider for screen 0
[    18.302] (II) Using input driver 'XRDPMOUSE' for 'xrdpMouse'
[    18.302] (**) Option "CorePointer"
[    18.302] (**) xrdpMouse: always reports core events
[    18.302] rdpmousePreInit: drv 0x560c252dcfe0 info 0x560c25446130, flags 0x0
[    18.302] (II) XINPUT: Adding extended input device "xrdpMouse" (type: Mouse, id 6)
[    18.302] rdpmouseControl: what 0
[    18.302] rdpmouseDeviceInit:
[    18.302] rdpmouseCtrl:
[    18.302] rdpRegisterInputCallback: type 1 proc 0x7f569762cc60
[    18.302] (**) xrdpMouse: (accel) keeping acceleration scheme 1
[    18.302] (**) xrdpMouse: (accel) acceleration profile 0
[    18.302] (**) xrdpMouse: (accel) acceleration factor: 2.000
[    18.302] (**) xrdpMouse: (accel) acceleration threshold: 4
[    18.302] rdpmouseControl: what 1
[    18.302] rdpmouseDeviceOn:
[    18.302] (II) Using input driver 'XRDPKEYB' for 'xrdpKeyboard'
[    18.302] (**) Option "CoreKeyboard"
[    18.302] (**) xrdpKeyboard: always reports core events
[    18.302] rdpkeybPreInit: drv 0x560c252dcf50 info 0x560c255b6b50, flags 0x0
[    18.302] (II) XINPUT: Adding extended input device "xrdpKeyboard" (type: Keyboard, id 7)
[    18.302] rdpkeybControl: what 0
[    18.302] rdpkeybDeviceInit:
[    18.314] rdpkeybChangeKeyboardControl:
[    18.314] rdpkeybChangeKeyboardControl: autoRepeat on
[    18.315] rdpRegisterInputCallback: type 0 proc 0x7f5697429530
[    18.315] rdpkeybControl: what 1
[    18.315] rdpkeybDeviceOn:
[    18.320] (II) config/udev: Adding input device Microsoft Vmbus HID-compliant Mouse (/dev/input/event1)
[    18.320] (II) AutoAddDevices is off - not adding device.
[    18.320] (II) config/udev: Adding input device Microsoft Vmbus HID-compliant Mouse (/dev/input/js0)
[    18.320] (II) AutoAddDevices is off - not adding device.
[    18.321] (II) config/udev: Adding input device Microsoft Vmbus HID-compliant Mouse (/dev/input/mouse0)
[    18.321] (II) AutoAddDevices is off - not adding device.
[    18.321] (II) config/udev: Adding input device AT Translated Set 2 keyboard (/dev/input/event0)
[    18.321] (II) AutoAddDevices is off - not adding device.
[    18.324] rdpSaveScreen:
[    18.324] rdpDeferredRandR:
[    18.324] rdpResizeSession: width 1024 height 768
[    18.324]   calling RRScreenSizeSet
[    18.324] rdpRRScreenSetSize: width 1024 height 768 mmWidth 271 mmHeight 203
[    18.325] rdpRRGetInfo:
[    18.325]   screen resized to 1024x768
[    18.326]   RRScreenSizeSet ok 1
[    18.326] rdpResizeSession: width 1920 height 1200
[    18.326]   calling RRScreenSizeSet
[    18.326] rdpRRScreenSetSize: width 1920 height 1200 mmWidth 508 mmHeight 318
[    18.326] rdpRRGetInfo:
[    18.326]   screen resized to 1920x1200
[    18.329]   RRScreenSizeSet ok 1
[    18.414] rdpInDeferredUpdateCallback:
[    18.414] rdpkeybChangeKeyboardControl:
[    18.414] rdpkeybChangeKeyboardControl: autoRepeat off
[    18.428] rdpClientConGotConnection:
[    18.428] rdpClientConGotConnection: g_sck_accept ok new_sck 7
[    18.428] rdpClientConGotConnection: adding only clientCon
[    18.431] rdpClientConProcessMsgVersion: version 0 0 0 1
[    18.432] rdpClientConProcessScreenSizeMsg: set width 1920 height 1200 bpp 32
[    18.432] rdpClientConProcessScreenSizeMsg: shmemid 32769 shmemptr 0x7f565266a000
[    18.432] rdpClientConProcessMsgClientInput: invalidate x 0 y 0 cx 1920 cy 1200
[    18.440] rdpClientConProcessMsgClientInfo:
[    18.440]   got client info bytes 5744
[    18.440]   jpeg support 0
[    18.440]   offscreen support 1
[    18.440]   offscreen size 10485760
[    18.440]   offscreen entries 100
[    18.440] rdpClientConProcessMsgClientInfo: got RFX capture
[    18.440]   cap_width 1920 cap_height 1216
[    18.440] rdpClientConProcessMsgClientInfo: shmemid 65537 shmemptr 0x7f565264c000 bytes 9338880
[    18.440]   client can not do offscreen to offscreen blits
[    18.440]   client can do new(color) cursor
[    18.440]   client can not do multimon
[    18.440] rdpRRSetRdpOutputs: numCrtcs 0 monitorCount 0
[    18.440] rdpRRSetRdpOutputs: add output 0 left 0 top 0 width 1920 height 1200
[    18.440] rdpLoadLayout: keylayout 0xa0000409 variant  display 10
[    18.440] rdpkeybChangeKeyboardControl:
[    18.440] rdpkeybChangeKeyboardControl: autoRepeat on
[    18.441] rdpkeybChangeKeyboardControl:
[    18.441] rdpkeybChangeKeyboardControl: autoRepeat on
[    18.518] rdpClientConProcessMsgClientInput: invalidate x 0 y 0 cx 1919 cy 1199
[    18.541] rdpInDeferredUpdateCallback:
[    18.541] rdpkeybChangeKeyboardControl:
[    18.541] rdpkeybChangeKeyboardControl: autoRepeat off
[    18.541] rdpkeybChangeKeyboardControl:
[    18.541] rdpkeybChangeKeyboardControl: autoRepeat off
[    19.007] rdpmouseControl: what 2
[    19.007] rdpmouseDeviceOff:
[    19.007] rdpkeybControl: what 2
[    19.007] rdpkeybDeviceOff:
[    19.008] rdpkeybControl: what 3
[    19.008] rdpkeybUnInit: drv 0x560c252dcf50 info 0x560c255b6b50, flags 0x0
[    19.008] rdpUnregisterInputCallback: proc 0x7f5697429530
[    19.008] rdpmouseControl: what 3
[    19.008] rdpmouseUnInit: drv 0x560c252dcfe0 info 0x560c25446130, flags 0x0
[    19.008] rdpUnregisterInputCallback: proc 0x7f569762cc60
[    19.009] rdpCloseScreen:
[    19.009] xorgxrdpDownDown:
[    19.009] xorgxrdpDownDown: 1
[    19.009] rdpClientConDeinit:
[    19.009] rdpClientConDeinit: disconnecting only clientCon
[    19.009] rdpClientConDisconnect:
[    19.009] rdpClientConDisconnect: clientCon removed from dev list
[    19.009] rdpClientConDeinit: deleting file /var/run/xrdp/sockdir/xrdp_display_10
[    19.009] rdpClientConDeinit: deleting file /var/run/xrdp/sockdir/xrdp_disconnect_display_10
[    19.010] (II) Server terminated successfully (0). Closing log file.

It’s not worth it — there is a better & less painful solution:

X11VNC

I spent at least 8 hours fighting the battle to connect from Windows 10 to Ubuntu 16 via xrpd and Windows rdp. I tried endless «solutions» that I found posted all over the web. I made progress, but never managed to fully solve it. Even if I had, though, it seems that this is weak setup anyway, because:

  • You can’t use the Unity Desktop, so your rdp has connect you to a completely different OS UI than what you would use as the Ubuntu standard.
  • You can’t be logged on already with that account. So if you were have a scenerio where sometimes you work directly on the Ubuntu machine, and sometimes you connect remotely, you’d have to be sure to log out to allow for that remote connection.
  • From what’ve read, once you have this, you have also fight a battle to get a «re-connection» mechanism working to re-enter an rdp session you left.
  • You have to manually enter credentials every time you log on. There is no way to save them on the client end and just connect instantly.

I’ve used a pile of different remote connection interfaces, and overall nothing beats the ease and quality of Windows RDP yet to my mind. A such, I was pretty fixated on using that. After fighting this long enough though, and finally throwing in the towel, I found that VNC pretty much works just as well in this context.

As I said initially, on the Ubuntu side I used «x11vnc». Refer to these directions for details on getting that fully setup:

How to setup x11vnc to access with graphical login screen?

On the Windows side, I used RealVNC Viewer: https://www.realvnc.com/en/connect/download/viewer/, which I already had installed and setup for a remote connection to a Mac on my LAN as well.

With this setup, I have NONE of the weaknesses outlined above. Further, in full screen mode, the display is just as good as it would be naturally. I see 0 lag, 0 blurring. I have a bi-directional clipboard working without any effort to get that…

In theory, you are supposed to be able to stack xrpd and x11vnc. See: http://c-nergy.be/blog/?p=5956
I tried that too, just to see if I could get it to work. I had no luck with that either. So I just said the hell with xrpd in the end, uninstalled it, and rolled back all the changes I made to my machine fighting with it (or least so of them).

Unless you have a major reason that you NEED RDP instead of VNC, I strongly recommend going this route I’ve described instead.

В статье рассказано о том, как настроить подключение к Linux через протокол RDP (Remote Desktop Protocol).

RDP — это наиболее распространённый протокол для удаленной работы (или администрирования ПК), при котором экран компьютера отображается на удалённом ПК, управление с мыши и клавиатуры. RDP может использоваться между ПК с различными ОС — как Windows, так и Linux.

Следующий гайд был написан по итогам успешной установки и запуска RDP сервера под Linux Runtu (Description: Ubuntu 20.04.3 LTS) и Linux Mint «Uma» Description: Linux Mint 20.2).

Установка и настройка RDP в Linux

  1. Если до этого предпринимались неудачные попытки настройки xrdp, прежде всего нужно удалить пакеты xrdp и xorgrdp и их настройки, чтобы выполнить установку с чистого листа.

    sudo apt-get purge xrdp xorgxrdp
  2. Вначале нужно выполнить обновление версий пакетов:

    sudo apt-get update & sudo apt-get upgrade & sudo apt-get dist-upgrade
  3. Если операционная система Ubuntu Linux 16.04 или 18.04, либо 20.04 или 21.04, для установки xrdp советую воспользоваться готовым скриптом с сайта

https://c-nergy.be/downloads/xRDP/xrdp-installer-1.4.zip — скачать архив и извлечь скрипт.

Документация по программе «xrdp-installer» находится по адресу https://c-nergy.be/blog/?p=17810, а также в самой программе выводится краткая справка о возможных параметрах её вызова, при запуске sh-файла с ключом —help:

bash xrdp-installer-1.4.sh --help

Для запуска вводить команду sudo не нужно, когда надо она запросит пароль su. Запуск, например, так:

chmod +x xrdp-installer-1.4.sh
./xrdp-installer-1.4.sh

И затем перейти к разделам ОКОНЧАТЕЛЬНАЯ НАСТРОЙКА XRDP и «Диагностика«.


Если операционная система не принадлежит к перечисленным, путь установки длиннее.

sudo apt-get install x-window-system xserver-xorg xserver-xorg-core
sudo apt-get install  xserver-xorg-legacy

Выполняем реконфигурацию пакета

sudo apt-get install xserver-xorg-legacy
sudo dpkg-reconfigure xserver-xorg-legacy

окно для конфигурирования запуска Xorg:
xserver-xorg-legacy
в котором я выбрал последний пункт, дающий наибольшие права — «Кто угодно».

Данной командой производится запись в файл cat /etc/X11/Xwrapper.config:
allowed_users=anybody


Установка пакетов, необходимых для запуска xrdp:

sudo apt-get install libx11-dev libxfixes-dev libssl-dev libpam0g-dev libtool libjpeg-dev flex bison gettext autoconf libxml-parser-perl libfuse-dev xsltproc libxrandr-dev python3-libxml2 nasm fuse pkg-config git intltool checkinstall

Установка двух основных пакетов XRDP:

sudo apt-get install xrdp xorgxrdp xserver-xorg-input-all 

Можно заметить, что программа установки создаст RSA ключ.
Чтобы операционная система могла прочитать этот ключ, нужно добавить пользователя xrdp в группу ssl-cert:

sudo adduser xrdp ssl-cert

Затем, нужно установить полностью графическую подсистему MESA и драйверы видеокарты. Зачем?
Дело в том, что имеет место цепочка: RDP client -> сеть -> Xrdp server -> Xsession -> Xorg -> MESA -> OpenGL Driver -> видеокарта
При отсутствии возможности запуска графического режима, RDP клиент также «отвалится» сразу после входа.

sudo apt-get install libgl1-mesa-dri libglew1.5-dev libglew-dev libgles2-mesa-dev libglm-dev mesa-utils-extra mesa-common-dev freeglut3 freeglut3-dev

Наконец, видеокарта должна поддерживать режим OpenGL версии 2.1 и выше и иметь установленный драйвер для Linux.

  1. Если старый компьютер — на чипсетах Interl 945 (под общим названием i915) — нужно установить модифицированный, сторонний драйвер, т.к. на штатных драйверах по умолчанию включается режим OpenGL 1.4, тогда как нужен 2.1. Иначе будут ошибки (см. ниже раздел «Ошибки»)

Если следующая команда выводит информацию, что OpenGL высокой версии, ничего делать не нужно:

glxinfo | grep OpenGL

Пример хорошая версия драйвера — равна 2.1 (обращаем внимание на строчку OpenGL version string:
OpenGL vendor string: Mesa Project
OpenGL renderer string: i915 (chipset: 945G)
OpenGL version string: 2.1 Mesa 21.3.0-devel (git-dfef775 2021-09-02 focal-oibaf-ppa)
OpenGL shading language version string: 1.20
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 2.0 Mesa 21.3.0-devel (git-dfef775 2021-09-02 focal-oibaf-ppa)
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.0.16
OpenGL ES profile extensions:

Если версия 1.4 старая, которая не годится для XRDP, вывод команды glxinfo следующий:
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) 945G
OpenGL version string: 1.4 Mesa 21.0.3
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 2.0 Mesa 21.0.3
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.0.16
OpenGL ES profile extensions:

Старая версия драйвера с поддержкой OpenGL 1.4 (установленная по умолчанию из пакета «xserver-xorg-video-intel»). данная версия OpenGL 1.4 не подходит.

Устанавливаем новую версию драйвера (ТОЛЬКО ДЛЯ СТАРЫХ ЧИПСЕТОВ ВСТРОЕННОЙ ГРАФИКИ i915 — i925 — i945)

sudo add-apt-repository ppa:oibaf/graphics-drivers && sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade && sudo reboot

Данная команда обновит пакеты графического драйвера для встроенной графики Intel и выполнит перезагрузку.

P.S. Если потребуется в-дальнейшем удаление PPA-репозитория, например, после установки новой видеокарты, команда для удаления: sudo ppa-purge ppa:oibaf/graphics-drivers.

  1. Разрешение подключения к X-серверу «для всех» — дано ранее командой sudo dpkg-reconfigure xserver-xorg-legacy
    Конфигурация записана в файл

    sudo ls -l /etc/X11/Xwrapper.config

Если необходимо, можно посмотреть его содержимое или отредактировать

sudo nano /etc/X11/Xwrapper.config
  • Примечание console — Xorg доступен только для пользователей из консоли, anybody для всех. По умолчанию указано console.
    Подробнее см команду man Xwrapper.config.
  1. Настройка графики OpenGL (обязательно лишь для ПК старых чипсетов со встроенной графикой i915):

Вывод на экран модели графического адаптера:

lspci | grep VGA

Если графический адаптер — встроенная графика Intel чипсета 915 или 82945G переходим в каталог

cd /usr/share/X11/xorg.conf.d/

создаём файл 20-intel.conf:

sudo nano 20-intel.conf

и добавляем в него текст:

Section "Device"
        Identifier "Intel Graphics"
        Driver "intel"
        Option "TearFree" "true"
        Option "AccelMethod" "SNA"
        Option "BackingStore" "true"
        Option "DRI" "3"
EndSection

Вариант для старых ПК: в строке «AccelMethod» вместо стандартного метода ускорения графики «SNA» указать «uxa«.

Лучше использовать «SNA» — более современный метод встроенной графики x86. Где uxa — предыдущая архитектура.

Сохраняем и выходим Ctrl+O, Ctrl+X.

  1. Редактирование конфигурационного файла XRDP:
sudo nano /etc/xrdp/xrdp.ini

в середину файла после строки «background» добавить адрес по умолчанию для XRDP.
address=address=0.0.0.0
nastrojka_xrdp

Перезапуск сервера:

sudo /etc/init.d/xrdp stop
sudo /etc/init.d/xrdp start

ОКОНЧАТЕЛЬНАЯ НАСТРОЙКА XRDP

  1. Добавляем пользователя xrdp в группу tty и даём права на последовательный порт (для решения проблемы начала сессии Xorg, что ‘tty0 access denied’)

    sudo usermod -a -G tty xrdp
    sudo chmod g+r /dev/tty0
  2. Разрешаем запуск сервиса «xrdp»

    sudo systemctl start xrdp
    sudo systemctl enable xrdp
  3. ВАЖНО: Копируем файл скрипт для запуска сессии и исправляем его

    cp /etc/X11/xinit/xinitrc ~/.xinitrc

Узнаём тип установленной оболочки рабочего стола:

echo $XDG_CURRENT_DESKTOP

Если вывод команды пустой, попробовать

cat /etc/X11/default-display-manager

Редактируем файл ~/.xinitrc для запуска сеанса (сессии):

nano ~/.xinitrc

комментируем или удаляем строчку /etc/X11/Xsession, вместо неё пишем:

exec startlxde

или

exec openbox-session
  • для ОС Runtu

или

exec startxfce4

для Linux Mint с оболочкой рабочего стола XFCE

или

exec startlxqt

для Lubuntu или Linux Mint с оболочкой рабочего стола LXQT (если такой вывод у команды
echo $XDG_CURRENT_DESKTOP).


Таким образом, файл .xinitrc в домашнем каталоге пользователя, запускаемый во время старта сеанса XRDP, принял следующий компактный вид:

#!/bin/sh
exec startlxqt

Примечание от 09.09.2021: В этот файл можно добавить запуск любых нужных программ, например, запуск сервера звука pulseaudio и загрузку и переключение национальной раскладки клавиатуры. Тогда файл .xinitrc примет вид:

#!/bin/sh
pulseaudio &
setxkbmap -layout 'us,ru' -option 'grp:ctrl_shift_toggle,grp_led:scroll' &
exec startlxqt

Примечание от 07.10.2021: данные команды нужно добавлять в файл ~/.xinitrc пользователя, который будет подключаться по протоколу RDP.

Содержимое файла ~/.xinitrc, если серверная ОС — Linux Mint с оболочкой XFCE:

#!/bin/sh
pulseaudio &
setxkbmap -layout 'us,ru' -option 'grp:alt_shift_toggle,grp_led:scroll' &
exec startxfce4

Когда рабочий стол сервера — LXQT, мой файл ~/.xinitrc следующий:
#!/bin/sh
pulseaudio &
setxkbmap -layout 'us,ru' -option 'grp:alt_shift_toggle,grp_led:scroll' &
exec startlxqt

И для OpenBox (Runtu Linux) работающий вариант файла ~/.xinitrc следующий:
#!/bin/sh
pulseaudio &
setxkbmap -layout 'us,ru' -option 'grp:ctrl_shift_toggle,grp_led:scroll' &
exec openbox-session

exec startlxde

Универсальный файл ~/.xinitrc для любых рабочих столов можно найти на stackoverflow (необходима установка slim).

Диагностика

Перезагружаем ПК, который выполняет роль сервера.

Проверяем с него же, что сервер Xorg запускается без ошибок:

sudo Xorg :10 -auth .Xauthority -config xrdp/xorg.conf -noreset -nolisten tcp

На этом этапе экран может погаснуть, если вы проверяете XRDP с того же ПК, на котором запущена начальная сессия Xorg. Нужно нажать Ctrl+Alt+F1 ввести имя и пароль, при помощи команды ps -aux | grep xrdp найти номер процесса «sudo xrdp» и завершить его командой «sudo kill <номер процесса>«.

В текстовом выводе результата этой команды будет содержаться причина ошибки.

Если же сообщение «(EE) Cannot establish any listening sockets — Make sure an X server isn’t already running(EE)»,
нужно перезагрузить ПК и повторить диагностику.

Второй вариант проверки — перед первым подключением к серверу XRDP, завершаем текущий сеанс «Пуск» — «Выйти» — «Выйти из системы». Так как клиент RDP не сможет создать второй сеанс такого же пользователя (с ошибкой в файле ~/.xorgxrdp.10.log: «(EE) Caught signal 11 (Segmentation fault). Server aborting»).

Либо, нужно создать второго пользователя для тестирования подключения к xRDP, которым будем подключаться по протоколу RDP:

sudo useradd -m ivanov-rdp
passwd ivanov-rdp

Ошибки xRDP сервера в Linux и их решения

Настройка брандмауэра

При невозможности подключения по протоколу RDP к серверу, прежде всего проверить открытие порта на FireWall:

sudo apt install nmap
sudo nmap 192.168.55.100 -p 3389

где вместо 192.168.55.100 укажите IP-адрес сервера в локальной сети.
Не забываем открыть локальный порт 3389 в firewall:

sudo ufw allow 3389

Если порт открыт, то вывод:
PORT STATE SERVICE
3389/tcp open ms-wbt-server

Проблема «При подключении с клиента по RDP виден чёрный пустой экран»

На сервере не установлен пакет xorgxrdp — программная «прослойка» между xorg и rdp сервером, который отображает графику — Рабочий стол, указатель мыши и иконки.

Решение — установить на сервер пакет xorgxrdp:

sudo apt-get install xorgxrdp
sudo service xrdp restart

Сеанс xRDP теперь должен работать. Пробуем подключиться!

Примечание: Пакет «xorgxrdp — Remote Desktop Protocol (RDP) modules for X.org» входит в большинство дистрибутивов Debian, а также Ubuntu 18.04 «bionic», 20.04 LTS «focal», 21.04 «hirsute», 21.10 «impish», 22.04 LTS «jammy» (вышла 21.04.2022), и производных ОС на основе DEB-пакетной базы Ubuntu (таких как Runtu, Lubuntu, Xubuntu, Kubuntu и др.), а также дистрибутивы на основе RPM: Fedora, Arch и др.. Поэтому данная инструкция должна работать с множеством версий Linux.


Remmina RDP Client — подключение к серверу

sudo apt-get install remmina remmina-plugin-rdp remmina-plugin-secret
sudo reboot
remmina

Добавляем подключение — тип RDP.
remmina

Если VPN не используется, то в IP адрес вводим «белый» IP-адрес домашнего роутера.
При работе через VPN IP адрес относится к внутренней (локальной, домашней) сети.
Имя и пароль — такие же как при входе «с клавиатуры» на сервере.

Нижние кнопки окна Remmina на нетбуках с разрешением экрана 1024×600 пикселей могут быть обрезаны и видны частично.
«Отменить» — «Сохранить как значения по умолчанию» — «Сохранить» — «Подключиться» — «Сохранить и подключиться»

Нажимаем крайнюю правую кнопку «Сохранить и подключиться».

Различные проблемы

Журналы ошибок в системной каталоге /var/log/:

  • xrdp.log
  • xrdp-sesman.log
  • Xorg.0.log, Xorg.10.log

Журналы ошибок в каталоге пользователя ~:

  • ~/.xorgxrdp.10.log

Просмотреть их можно командами:

sudo cat /var/log/xrdp.log
sudo cat /var/log/xrdp-sesman.log
sudo cat /var/log/Xorg.0.log
sudo cat /var/log/Xorg.10.log
sudo cat ~/.xorgxrdp.log

Если при подключении с ПК под управлением Windows к ПК под управлением Linux после ввода имени пользователя пароля виден сине-зелёный однотонный фон без текста и иконок,
или в файле XRDP.LOG многочисленные ошибки, значит подключение произошло, но не запустилась графика Xorg — скорее всего из-за старой версии OpenGL, либо прав, см. выше.

Пример ошибки на стороне клиента при попытке подключения с помощью программы MSTSC.EXE:
blue

Сообщения об ошибка в журнале XRDP.LOG на стороне сервера:
error19
или аналогичная [DEBUG] Closed socket 17 (AF_UNIX)

Решение — диагностика командой с рабочего стола машины-сервера:

sudo Xorg :10 -auth .Xauthority -config xrdp/xorg.conf -noreset -nolisten tcp

Нужно добиться отсутствия ошибок Xorg в файле /var/log/Xorg.10.log.

Если при подключении с ПК под управлением Windows виден на мгновение чёрный экран, который тут же закрывается, один из вариантов:

  • неправильной имя/пароль пользователя
  • неправильный скрипт ~/.xinitrc (не запустилась сессия рабочего стола). Проверьте файл ~/.xinitrc на наличие команды exec <имя оболочки>.
  • пользователь, которым вы подключаетесь к ПК удалённо, имеет открытую сессию в операционной системе локально (использует компьютер в данный момент).

Безопасность

Теперь любой ПК в локальной сети сможет подключаться к вашему компьютеру по протоколу RDP. Следует установить для учётной записи пользователя сложный пароль. Если подключение к ПК из Интернет — можно дополнительно использовать VPN с шифрованием трафика.


Дата последнего редактирования 25.04.2022

Похожие публикации

Понравилась статья? Поделить с друзьями:
  • Ошибка при пинге заданный узел недоступен
  • Ошибка при подключении xbox live
  • Ошибка при печати чека нет связи
  • Ошибка при подключении teamviewer
  • Ошибка при печати чека касатка