I-VPS kwi-Linux ene-graphical interface: ukwazisa iseva ye-RDP ku-Ubuntu 18.04

I-VPS kwi-Linux ene-graphical interface: ukwazisa iseva ye-RDP ku-Ubuntu 18.04
В inqaku elidlulileyo мы разобрали запуск сервера VNC на виртуальной машине любого типа. У этого варианта масса недостатков, основным из которых являются высокие требования к пропускной способности каналов передачи данных. Сегодня мы попробуем подключиться к графическому рабочему столу на Linux по RDP (Remote Desktop Protocol). Система VNC основана на передаче массивов пикселей по протоколу RFB (Remote Framebuffer), а RDP позволяет отправлять более сложные графические примитивы и высокоуровневые команды. Обычно он используется для организации служб удаленных рабочих столов в Windows, но серверы для Linux также доступны.

Isiqulatho:

Ukuhlohla imeko-bume yegraphical
Ukwenziwa kweRussification yeseva kunye nofakelo lwesoftware
Установка и настройка сервера RDP
Настройка межсетевого экрана
Подключение к серверу RDP
Менеджер сессий и сеансы пользователей
Переключение раскладок клавиатуры

Ukuhlohla imeko-bume yegraphical

Мы возьмем виртуальную машину с Ubuntu Server 18.04 LTS с двумя вычислительными ядрами, четырьмя гигабайтами оперативной памяти и жестким диском (HDD) на двадцать гигабайт. Более слабая конфигурация плохо подходит для графического десктопа, хотя это зависит от решаемых задач. Не забывайте использовать промокод Habrahabr10 для получения скидки в 10% при заказе.

I-VPS kwi-Linux ene-graphical interface: ukwazisa iseva ye-RDP ku-Ubuntu 18.04
Установка окружения рабочего стола со всеми зависимостями выполняется следующей командой:

sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

Как и в предыдущем случае, мы выбрали XFCE из-за относительно невысоких требований к вычислительным ресурсам.

Ukwenziwa kweRussification yeseva kunye nofakelo lwesoftware

Часто виртуальные машины разворачиваются только с английской локализацией. На десктопе может потребоваться русская, настроить которую несложно. Сначала установим переводы для системных программ:

sudo apt-get install language-pack-ru

Masiseke ukwenziwa kwendawo:

sudo update-locale LANG=ru_RU.UTF-8

Isiphumo esifanayo sinokufezekiswa ngokuhlela ngesandla /etc/default/locale.

Ukwenziwa kwalapha ekhaya kwe GNOME kunye ne KDE, indawo yokugcina inolwimi-pack-gnome-ru kunye nolwimi-ipack-kde-ru phakheji - uzakuzifuna ukuba usebenzisa udweliso lweenkqubo kwezi meko-bume zedesktop. Kwi-XFCE, iinguqulelo zifakelwe kunye nezicelo. Okulandelayo ungafaka izichazi-magama:

# Словари для проверки орфографии
sudo apt-get install hunspell hunspell-ru

# Тезаурус для LibreOffice
sudo apt-get install mythes-ru

# Англо-русский словарь в формате DICT
sudo apt-get install mueller7-dict

Ukongeza, ukufakela iinguqulelo kunokufuneka kwezinye iinkqubo zesicelo:

# Браузер Firefox
sudo apt-get install firefox firefox-locale-ru

# Почтовый клиент Thunderbird
sudo apt-get install thunderbird thunderbird-locale-ru

# Офисный пакет LibreOffice
sudo apt-get install libreoffice libreoffice-l10n-ru libreoffice-help-ru

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

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

В репозиториях Ubuntu есть распространяемый свободно сервер Xrdp, которым мы и воспользуемся:

sudo apt-get install xrdp

Если все прошло нормально, сервер должен запуститься автоматически:

sudo systemctl status xrdp

I-VPS kwi-Linux ene-graphical interface: ukwazisa iseva ye-RDP ku-Ubuntu 18.04
Сервер Xrdp запускается с правами пользователя xrdp и по умолчанию берет cертификат /etc/ssl/private/ssl-cert-snakeoil.key, который можно заменить собственным. Для доступа на чтение файла нужно добавить пользователя в группу ssl-cert:

sudo adduser xrdp ssl-cert

Настройки по умолчанию можно найти в файле /etc/default/xrdp, а все прочие конфигурационные файлы сервера лежат в каталоге /etc/xrdp. Основные параметры находятся в файле xrdp.ini, который можно не менять. Конфиг хорошо документирован, к тому же в комплекте имеется соответствующие manpages:

man xrdp.ini
man xrdp

Осталось только отредактировать скрипт /etc/xrdp/startwm.sh, который исполняется при инициализации пользовательской сессии. Предварительно сделаем резервную копию скрипта из дистрибутива:

sudo mv /etc/xrdp/startwm.sh /etc/xrdp/startwm.b
sudo nano /etc/xrdp/startwm.sh

Чтобы запустить окружение рабочего стола XFCE, потребуется сценарий примерно такого содержания:

#!/bin/sh
if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG LANGUAGE
fi
exec /usr/bin/startxfce4

Обратите внимание: в скриптах лучше прописывать полный путь к исполняемым файлам — это хорошая привычка. Сделаем скрипт исполняемым и на этом настройку сервера Xrdp можно считать законченной:

sudo chmod 755 /etc/xrdp/startwm.sh

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

sudo systemctl restart xrdp

Настройка межсетевого экрана

По умолчанию Xrdp слушает TCP-порт 3389 на всех интерфейсах. В зависимости от конфигурации виртуального сервера может потребоваться настройка межсетевого экрана Netfilter. В Linux это обычно делается с помощью утилиты iptables, но в Ubuntu лучше использовать ufw. Если IP-адрес клиента известен, настройка осуществляется следующей командой:

sudo ufw allow from IP_Address to any port 3389

Разрешить соединения с любого IP можно так:

sudo ufw allow 3389

Протокол RDP поддерживает шифрование, но открывать доступ к серверу Xrdp из сетей общего пользования — плохая идея. Если у клиента нет фиксированного IP, для повышения уровня безопасности сервер должен слушать только localhost. Доступ к нему лучше настроить через туннель SSH, который безопасно перенаправит трафик с клиентского компьютера. Аналогичный подход мы использовали в предыдущей статье для сервера VNC.

Подключение к серверу RDP

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

sudo adduser rdpuser

I-VPS kwi-Linux ene-graphical interface: ukwazisa iseva ye-RDP ku-Ubuntu 18.04
Masiyongeze umsebenzisi kwiqela le-sudo ukuze akwazi ukwenza imisebenzi enxulumene nolawulo. Ukuba akukho mfuneko injalo, ungatsiba eli nyathelo:

sudo gpasswd -a rdpuser sudo

Подключиться к серверу можно с помощью любого клиента RDP, включая встроенный клиент службы удаленных рабочих столов Windows. Если Xrdp слушает внешний интерфейс, никаких дополнительных телодвижений не понадобится. Достаточно указать в настройках соединения IP-адрес VPS, имя пользователя и пароль. После подключения мы увидим примерно такую картину:

I-VPS kwi-Linux ene-graphical interface: ukwazisa iseva ye-RDP ku-Ubuntu 18.04
После первичной настройки окружения рабочего стола мы получим полноценный десктоп. Как видите, он потребляет не так много ресурсов, хотя дальше все будет зависеть от используемых приложений.

I-VPS kwi-Linux ene-graphical interface: ukwazisa iseva ye-RDP ku-Ubuntu 18.04
Если сервер Xrdp слушает только localhost, на клиентском компьютере трафик придется упаковать в туннель SSH (на VPS должен быть запущен sshd). Под Windows можно использовать графический клиент SSH (например, PuTTY), а в UNIX-системах нужна утилита ssh:

ssh -L 3389:127.0.0.1:3389 -C -N -l rdpuser RDP_server_ip

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

С мобильными устройствами сложнее: способные поднять туннель клиенты SSH придется покупать, к тому же в iOS и iPadOS фоновая работа сторонних приложений затруднена из-за слишком хорошей оптимизации энергопотребления. На iPhone и iPad поднять туннель в отдельном приложении не получится — потребуется приложение-комбайн, которое само умеет устанавливать соединение RDP через SSH. Такое, например, как Remoter Pro.

Менеджер сессий и сеансы пользователей

Возможность многопользовательской работы реализована непосредственно в сервере Xrdp и не требует дополнительной настройки. После запуска сервиса через systemd один процесс работает в режиме демона, слушает порт 3389 и взаимодействует через localhost с менеджером сессий.

ps aux |grep xrdp

I-VPS kwi-Linux ene-graphical interface: ukwazisa iseva ye-RDP ku-Ubuntu 18.04

sudo netstat -ap |grep xrdp

I-VPS kwi-Linux ene-graphical interface: ukwazisa iseva ye-RDP ku-Ubuntu 18.04
Менеджер сеансов пользователям обычно не виден, потому что заданные в настройках клиента логин и пароль передаются ему автоматически. Если этого не произошло или при аутентификации возникла ошибка, вместо рабочего стола появится интерактивное окно для входа в систему.

I-VPS kwi-Linux ene-graphical interface: ukwazisa iseva ye-RDP ku-Ubuntu 18.04
Автоматический запуск менеджера сессий прописан в файле /etc/default/xrdp, а конфигурация хранится в /etc/xrdp/sesman.ini. По умолчанию выглядит она примерно так:

[Globals]
ListenAddress=127.0.0.1
ListenPort=3350
EnableUserWindowManager=true
UserWindowManager=startwm.sh
DefaultWindowManager=startwm.sh

[Security]
AllowRootLogin=true
MaxLoginRetry=4
TerminalServerUsers=tsusers
TerminalServerAdmins=tsadmins
; When AlwaysGroupCheck=false access will be permitted
; if the group TerminalServerUsers is not defined.
AlwaysGroupCheck=false

[Sessions]

Здесь можно ничего не менять, стоит только запретить вход с правами root (AllowRootLogin=false). Для каждого авторизовавшегося в системе пользователя запускается отдельный процесс xrdp: если отсоединиться не завершив сеанс, пользовательские процессы по умолчанию продолжат работать, а к сеансу можно будет подключиться заново. Настройки можно изменить в файле /etc/xrdp/sesman.ini (секция [Sessions]).

Переключение раскладок клавиатуры

С двухсторонним буфером обмена проблем обычно не возникает, а вот с русской раскладкой клавиатуры придется немного пошаманить (русская локаль должна быть уже fakiwe). Отредактируем клавиатурные настройки сервера Xrdp:

sudo nano /etc/xrdp/xrdp_keyboard.ini

В конец конфигурационного файла нужно добавить следующие строки:

[rdp_keyboard_ru]
keyboard_type=4
keyboard_type=7
keyboard_subtype=1
model=pc105
options=grp:alt_shift_toggle
rdp_layouts=default_rdp_layouts
layouts_map=layouts_map_ru

[layouts_map_ru]
rdp_layout_us=us,ru
rdp_layout_ru=us,ru

Остается сохранить файл и перезапустить Xrdp:

sudo systemctl restart xrdp

Как видите, поднять сервер RDP на линуксовом VPS несложно, а в inqaku elidlulileyo мы уже разобрали настройку VNC. Помимо этих технологий, есть еще один интересный вариант: использующая модифицированный протокол NX 3 система X2Go. С ней мы разберемся в следующей публикации.

I-VPS kwi-Linux ene-graphical interface: ukwazisa iseva ye-RDP ku-Ubuntu 18.04

umthombo: www.habr.com

Yongeza izimvo