VPS на Linux с графичен интерфейс: стартиране на RDP сървър на Ubuntu 18.04

VPS на Linux с графичен интерфейс: стартиране на RDP сървър на Ubuntu 18.04
В предишна статия обсъдихме пускането на VNC сървър на виртуална машина от всякакъв тип. Тази опция има много недостатъци, основният от които е високите изисквания за пропускателна способност на каналите за предаване на данни. Днес ще се опитаме да се свържем с графичен работен плот на Linux чрез RDP (Remote Desktop Protocol). Системата VNC се основава на предаване на масиви от пиксели с помощта на протокола RFB (Remote Framebuffer), а RDP ви позволява да изпращате по-сложни графични примитиви и команди от високо ниво. Обикновено се използва за хостване на услуги за отдалечен работен плот в Windows, но са налични и сървъри за Linux.

Съдържание:

Инсталиране на графичната среда
Русификация на сървъра и инсталиране на софтуер
Инсталиране и конфигуриране на RDP сървър
Настройка на защитна стена
Свързване към RDP сървър
Мениджър на сесии и потребителски сесии
Превключване на клавиатурни подредби

Инсталиране на графичната среда

Ще вземем виртуална машина с Ubuntu Server 18.04 LTS с две изчислителни ядра, четири гигабайта RAM и двадесет гигабайтов твърд диск (HDD). По-слабата конфигурация не е подходяща за графичен работен плот, въпреки че това зависи от задачите, които се решават. Не забравяйте да използвате промо код Habrahabr10, за да получите 10% отстъпка от поръчката си.

VPS на Linux с графичен интерфейс: стартиране на RDP сървър на Ubuntu 18.04
Инсталирането на работната среда с всички зависимости се извършва със следната команда:

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

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

Русификация на сървъра и инсталиране на софтуер

Често виртуалните машини се разполагат само с английска локализация. На работния плот може да ви трябва руски език, който е лесен за настройка. Първо, нека инсталираме преводи за системни програми:

sudo apt-get install language-pack-ru

Нека да настроим локализацията:

sudo update-locale LANG=ru_RU.UTF-8

Същият ефект може да се постигне чрез ръчно редактиране на /etc/default/locale.

За локализиране на GNOME и KDE, хранилището разполага с пакетите language-pack-gnome-ru и language-pack-kde-ru - ще ви трябват, ако използвате програми от тези десктоп среди. В XFCE преводите се инсталират с приложения. След това можете да инсталирате речниците:

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

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

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

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

# Браузер 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

VPS на Linux с графичен интерфейс: стартиране на RDP сървър на Ubuntu 18.04
Xrdp сървърът работи с xrdp потребителски права и по подразбиране приема /etc/ssl/private/ssl-cert-snakeoil.key сертификат, който може да бъде заменен с ваш собствен. За да имате достъп за четене на файла, трябва да добавите потребителя към групата ssl-cert:

sudo adduser xrdp ssl-cert

Настройките по подразбиране могат да бъдат намерени във файла /etc/default/xrdp, а всички останали сървърни конфигурационни файлове се намират в директорията /etc/xrdp. Основните параметри са във файла xrdp.ini, който не трябва да се променя. Конфигурацията е добре документирана и съответните страници с ръководство са включени:

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

VPS на Linux с графичен интерфейс: стартиране на RDP сървър на Ubuntu 18.04
Нека добавим потребителя към групата sudo, за да може да изпълнява задачи, свързани с администриране. Ако няма такава нужда, можете да пропуснете тази стъпка:

sudo gpasswd -a rdpuser sudo

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

VPS на Linux с графичен интерфейс: стартиране на RDP сървър на Ubuntu 18.04
След първоначалната настройка на работната среда ще получим пълноценен работен плот. Както можете да видите, той не консумира много ресурси, въпреки че всичко ще зависи от използваните приложения.

VPS на Linux с графичен интерфейс: стартиране на RDP сървър на Ubuntu 18.04
Ако Xrdp сървърът слуша само localhost, трафикът на клиентския компютър ще трябва да бъде пакетиран в SSH тунел (sshd трябва да работи на VPS). В 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

VPS на Linux с графичен интерфейс: стартиране на RDP сървър на Ubuntu 18.04

sudo netstat -ap |grep xrdp

VPS на Linux с графичен интерфейс: стартиране на RDP сървър на Ubuntu 18.04
Мениджърът на сесии обикновено не се вижда от потребителите, тъй като потребителското име и паролата, посочени в настройките на клиента, се прехвърлят към него автоматично. Ако това не се случи или има грешка по време на удостоверяване, вместо работния плот ще се появи интерактивен прозорец за влизане.

VPS на Linux с графичен интерфейс: стартиране на RDP сървър на 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 (секция [Сесии]).

Превключване на клавиатурни подредби

Обикновено няма проблеми с двупосочен клипборд, но с руската клавиатурна подредба ще трябва да си поиграете малко (руският локал трябва да е вече инсталирана). Нека редактираме настройките на клавиатурата на 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 сървър на Linux VPS, но предишна статия Вече обсъдихме настройката на VNC. В допълнение към тези технологии има още една интересна опция: системата X3Go, използваща модифициран NX 2 протокол. Ще се занимаваме с него в следващата публикация.

VPS на Linux с графичен интерфейс: стартиране на RDP сървър на Ubuntu 18.04

Източник: www.habr.com

Добавяне на нов коментар