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 із двома обчислювальними ядрами, чотирма гігабайтами оперативної пам'яті та жорстким диском (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, який не можна змінювати. Конфіг добре документований, до того ж у комплекті є відповідні 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

VPS на Linux із графічним інтерфейсом: запускаємо сервер RDP на Ubuntu 18.04
Додамо користувача до групи sudo, щоб він міг вирішувати пов'язані з адмініструванням завдання. Якщо такої потреби немає, цей крок можна пропустити:

sudo gpasswd -a rdpuser sudo

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

VPS на Linux із графічним інтерфейсом: запускаємо сервер RDP на Ubuntu 18.04
Після первинного настроювання оточення робочого столу ми отримаємо повноцінний робочий стіл. Як бачите, він споживає не так багато ресурсів, хоча далі все залежатиме від додатків, що використовуються.

VPS на Linux із графічним інтерфейсом: запускаємо сервер RDP на 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

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 (секція [Sessions]).

Перемикання розкладок клавіатури

З двостороннім буфером обміну проблем зазвичай не виникає, а от з російською розкладкою клавіатури доведеться трохи пошаманити (російська локаль має бути вже встановлена). Відредагуємо клавіатурні налаштування сервера 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 нескладно, а в попередній статті ми вже розібрали налаштування VNC. Крім цих технологій, є ще один цікавий варіант: система X3Go, яка використовує модифікований протокол NX 2. З нею ми розберемося у наступній публікації.

VPS на Linux із графічним інтерфейсом: запускаємо сервер RDP на Ubuntu 18.04

Джерело: habr.com

Додати коментар або відгук