- exec startlxde
- Диагностика
- Ошибки xRDP сервера в Linux и их решения
- Настройка брандмауэра
- Проблема «При подключении с клиента по RDP виден чёрный пустой экран»
- Remmina RDP Client — подключение к серверу
- Различные проблемы
- Безопасность
- Как установить и запустить RDP сервер в Linux
- Как использовать freerdp-shadow для запуска RDP сервера
- Ошибка freerdp-shadow «client authentication failure: -1»
- Как запустить RDP сервер с xrdp
- Связанные статьи:
- RDP на Debian/Ubuntu/Mint с помощью XRDP
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:
Если порт открыт, то вывод:
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.
Если VPN не используется, то в IP адрес вводим «белый» IP-адрес домашнего роутера.
При работе через VPN IP адрес относится к внутренней (локальной, домашней) сети.
Имя и пароль — такие же как при входе «с клавиатуры» на сервере.
Нижние кнопки окна Remmina на нетбуках с разрешением экрана 1024×600 пикселей могут быть обрезаны и видны частично.
«Отменить» — «Сохранить как значения по умолчанию» — «Сохранить» — «Подключиться» — «Сохранить и подключиться»
Нажимаем крайнюю правую кнопку «Сохранить и подключиться».
Различные проблемы
Журналы ошибок в системной каталоге /var/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:
Сообщения об ошибка в журнале XRDP.LOG на стороне сервера:
или аналогичная [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
Как установить и запустить RDP сервер в Linux
В этой инструкции мы рассмотрим два RDP сервера для Linux: freerdp-shadow (входит в пакет freerdp) и xrdp.
Как использовать freerdp-shadow для запуска RDP сервера
Для установки freerdp в Debian, Kali Linux, Linux Mint, Ubuntu и производные выполните команду:
sudo apt install freerdp2-shadow-x11 winpr-utils
Для установки freerdp в Arch Linux и производные выполните команду:
Исполнимые файлы в разных дистрибутивах называются чуть по-разному. В Debian, Kali Linux, Linux Mint, Ubuntu файл для запуска RDP сервера называется: freerdp-shadow-x11
А в Arch Linux файл для запуска RDP сервера называется: freerdp-shadow-cli
Но по сути это одна программа и опции у них одинаковые.
Чуть выше, говоря о rdesktop, мы уже столкнулись с Network Level Authentication (NLA), то есть проверкой подлинности на уровне сети. Для запуска RDP сервера на Linux вы должны выбрать один из двух вариантов:
- запустить сервер вовсе без аутентификации
- включить NLA и сделать необходимые для неё настройки
Чтобы запустить RDP сервер вовсе без аутентификации используйте опцию -auth:
Если аутентификация включена, PAM используется с подсистемой X11. Запуск от имени пользователя root не обязателен, однако, если запускать от имени пользователя, только тот же пользователь, который запустил freerdp-shadow, может аутентифицироваться. Предупреждение: если аутентификация отключена, каждый может подключиться.
Любая сетевая служба без аутентификации это беда для безопасности системы. Поэтому рассмотрим, как запустить freerdp-shadow с поддержкой NLA.
Прежде всего для NLA необходимо создать файл, в котором будет строка вида:
Имя пользователя Linux нам известно, для вычисления хеша нужно выполнить команду вида:
winpr-hash -u ПОЛЬЗОВАТЕЛЬ -p ПАРОЛЬ
К примеру, имя пользователя mial, а пароль цифра 2 тогда команда следующая:
8f33e2ebe5960b8738d98a80363786b0
Создаём текстовый файл SAM и в него записываем строку
mial. 8f33e2ebe5960b8738d98a80363786b0.
Теперь запускаем freerdp-shadow-x11 с двумя опциями:
- /sam-file:ФАЙЛ — указывает на расположение NTLM SAM файла для NLA аутентификации
- /sec:nla — принудительное включение аутентификации по протоколу NLA
Итак, моя команда следующая:
freerdp-shadow-x11 /sam-file:SAM /sec:nla
Для проверки подключаюсь из Windows:
У нас запрашивают пароль — это означает, что на сервере RDP включена аутентификация NLA.
Для того, чтобы делиться не всем экраном, а только его частью, используйте опцию /rect:x,y,w,h. Где:
- x,y — координаты верхнего левого угла прямоугольника
- w — ширина прямоугольника
- h — высота прямоугольника
К примеру, чтобы делиться частью экрана 500×500 пикселей с координатами 200,300:
freerdp-shadow-x11 /sam-file:SAM /sec:nla /rect:200,300,500,500
Ошибка freerdp-shadow «client authentication failure: -1»
Если при запуске RDP сервера freerdp-shadow вы получили ошибку:
[11:54:02:458] [1921:1925] [ERROR][com.freerdp.client.shadow] - client authentication failure: -1 [11:54:02:458] [1921:1925] [ERROR][com.freerdp.core.peer] - peer_recv_callback: CONNECTION_STATE_FINALIZATION - peer_recv_pdu() fail [11:54:02:458] [1921:1925] [ERROR][com.freerdp.core.transport] - transport_check_fds: transport->ReceiveCallback() - -1 [11:54:02:458] [1921:1925] [ERROR][com.freerdp.client.shadow] - Failed to check FreeRDP file descriptor
То необходимо создать файл SAM и запустить freerdp-shadow с опциями /sam-file:SAM /sec:nla как это показано выше.
Как запустить RDP сервер с xrdp
Для установки xrdp в Debian, Kali Linux, Linux Mint, Ubuntu и производные выполните команду:
Для установки xrdp в Arch Linux и производные выполните команды:
sudo pacman -S alsa-lib mesa git clone https://aur.archlinux.org/xrdp.git cd xrdp makepkg -si
Для запуски служб xrdp-sesman и xrdp в любом дистрибутиве выполните команду:
sudo systemctl start xrdp-sesman.service
Важные файлы xrdp:
- /etc/xrdp/xrdp.ini — файл настроек
- /var/log/xrdp.log — файл журналов событий
Подключаемся из Windows к xrdp. Вводим имя пользователя и пароль пользователя Linux:
Теперь мы можем выполнять команды на компьютере с Linux так, будто бы мы сидим за ним:
Связанные статьи:
RDP на Debian/Ubuntu/Mint с помощью XRDP
Надоело использовать консоль? Вы не знаете как пользоваться консолью и Вам проще использовать графическую оболочку? Выход есть и сейчас я покажу как я это делал у себя на сервере. Хочу рассказать в своей статье «RDP на Debian/Ubuntu/Mint с помощью XRDP» как я настроил RDP на Debian.
Желательно выполнить обновление всего:
# sudo apt-get update && sudo apt-get upgrade
Установим сначала дополнительное программное обеспечение:
# sudo apt-get install ubuntu-desktop
Можно ознакомиться с другими графическими оболочками в моей теме:
После того как установится xRDP, мы его запустим:
Теперь создадим пользователя под управление нашего соединения, у меня это будет пользователь XRDP:
Может такая команды и не выполниться, то нужно сделать «финт ушами», а именно запустить с параметром:
# adduser XRDP --force-badname
Даем нашему пользователю ( у меня — XRDP) права полного доступа ( рута):
Так же, зададим пароль для пользователя:
Теперь запустите «Remote Desktop Connection,» на вашей локальной машине. Можно ввести «MSTSC» перешел в Пуск -> Выполнить или вы можете найти программу в вашем меню.
В открывшееся окно вводим IP адрес нашего сервера (если кто не знает какой ИП, то выполните ifconfig), вводим пользователя и нажимаем «подключить».
У меня открылось окно, вроде бы все хорошо, а вот нет! Почитал логи, все чисто было. Оказалось нужно еще кое что добавить и немного установить. Сейчас мы этим займемся.
Была проблема в том, что если вы используете только консоль ( это же логично, зачем на серверах ставить GUI), то на машине не установлены графические оболочки.
Устанавливаем xfce4 на сервер, но перед этим всем обновимся:
# sudo apt-get update # sudo apt-get install xfce4
После установки графической среды, пропишем параметр входа в систему:
# echo xfce4-session >~/.xsession
Но т.к я юзаю пользователя XRDP, то нужно и для него это сделать:
# echo xfce4-session > /home/XRDP/.xsession
Перезапускаем саму службу:
# sudo service xrdp restart
После чего можно пробовать подключатся! Должно все работать.
Для удобства можно заюзать следующий скрипт:
# vim /etc/xrdp/start_xRDP.sh #!/bin/sh if [ -r /etc/default/locale ]; then . /etc/default/locale export LANG LANGUAGE fi #. /etc/X11/Xsession startxfce4 # or startlxde, startlubuntu, gnome-session, startkde
# chmod +x /etc/xrdp/start_xRDP.sh
PS: можно так же установить Gnome, KDE, LXDE, но это кто к чему привык. Но не забывайте прописать в файл с сессией строки запуска X. Но как по мне, Это извращение ставить графическую оболочку! Юзайте консоль, люди!