В
Зміст:
Встановлення графічного оточення
Ми візьмемо віртуальну машину з Ubuntu Server 18.04 LTS із двома обчислювальними ядрами, чотирма гігабайтами оперативної пам'яті та жорстким диском (HDD) на двадцять гігабайт. Більш слабка конфігурація погано підходить для графічного робочого столу, хоча це залежить від розв'язуваних завдань. Не забувайте використати промокод Habrahabr10 для отримання знижки в 10% при замовленні.
Встановлення оточення робочого столу з усіма залежностями виконується наступною командою:
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
Сервер 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, який безпечно перенаправить трафік із клієнтського комп'ютера. Аналогічний підхід ми
Підключення до сервера RDP
Для роботи з оточенням робочого столу краще створити окремого непривілейованого користувача:
sudo adduser rdpuser
Додамо користувача до групи sudo, щоб він міг вирішувати пов'язані з адмініструванням завдання. Якщо такої потреби немає, цей крок можна пропустити:
sudo gpasswd -a rdpuser sudo
Підключитись до сервера можна за допомогою будь-якого клієнта RDP, включаючи вбудований клієнт служби віддалених робочих столів Windows. Якщо Xrdp слухає зовнішній інтерфейс, жодних додаткових рухів тіла не знадобиться. Достатньо вказати в налаштуваннях з'єднання IP-адресу VPS, ім'я користувача та пароль. Після підключення ми побачимо приблизно таку картину:
Після первинного настроювання оточення робочого столу ми отримаємо повноцінний робочий стіл. Як бачите, він споживає не так багато ресурсів, хоча далі все залежатиме від додатків, що використовуються.
Якщо сервер 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. Таке, наприклад, як
Менеджер сесій та сеанси користувачів
Можливість розрахованої на багато користувачів роботи реалізована безпосередньо в сервері Xrdp і не вимагає додаткового налаштування. Після запуску сервісу через systemd один процес працює в режимі демона, слухає порт 3389 та взаємодіє через localhost з менеджером сесій.
ps aux |grep xrdp
sudo netstat -ap |grep xrdp
Менеджер сеансів користувачам зазвичай не видно, тому що задані в налаштуваннях клієнта логін та пароль передаються йому автоматично. Якщо цього не сталося або при автентифікації виникла помилка, замість робочого столу з'явиться інтерактивне вікно для входу до системи.
Автоматичний запуск менеджера сесій прописаний у файлі /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]).
Перемикання розкладок клавіатури
З двостороннім буфером обміну проблем зазвичай не виникає, а от з російською розкладкою клавіатури доведеться трохи пошаманити (російська локаль має бути вже
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 нескладно, а в
Джерело: habr.com