VPS на Linux з графічным інтэрфейсам: запускаем сервер RDP на Ubuntu 18.04/XNUMX

VPS на Linux з графічным інтэрфейсам: запускаем сервер RDP на Ubuntu 18.04/XNUMX
В папярэдняй артыкуле мы разабралі запуск сервера 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/XNUMX
Устаноўка асяроддзя рабочага стала з усімі залежнасцямі выконваецца наступнай камандай:

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/XNUMX
Сервер 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/XNUMX
Дадамо карыстальніка ў групу sudo, каб ён мог вырашаць злучаныя з адміністраваннем задачы. Калі такой патрэбнасці няма, гэты крок можна прапусціць:

sudo gpasswd -a rdpuser sudo

Падлучыцца да сервера можна з дапамогай любога кліента RDP, у тым ліку ўбудаваны кліент службы выдаленых працоўных сталоў Windows. Калі Xrdp слухае вонкавы інтэрфейс, ніякіх дадатковых рухаў цела не спатрэбіцца. Дастаткова пазначыць у наладах злучэння IP-адрас VPS, імя карыстальніка і пароль. Пасля падлучэння мы ўбачым прыкладна такую ​​карціну:

VPS на Linux з графічным інтэрфейсам: запускаем сервер RDP на Ubuntu 18.04/XNUMX
Пасля першаснай налады асяроддзя рабочага стала мы атрымаем паўнавартасны дэсктоп. Як бачыце, ён спажывае не так шмат рэсурсаў, хаця далей усё будзе залежаць ад выкарыстоўваных прыкладанняў.

VPS на Linux з графічным інтэрфейсам: запускаем сервер RDP на Ubuntu 18.04/XNUMX
Калі сервер 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/XNUMX

sudo netstat -ap |grep xrdp

VPS на Linux з графічным інтэрфейсам: запускаем сервер RDP на Ubuntu 18.04/XNUMX
Мэнэджар сеансаў карыстальнікам звычайна не бачны, таму што зададзеныя ў наладах кліента лагін і пароль перадаюцца яму аўтаматычна. Калі гэтага не адбылося або пры аўтэнтыфікацыі ўзнікла памылка, замест працоўнага стала з'явіцца інтэрактыўнае акно для ўваходу ў сістэму.

VPS на Linux з графічным інтэрфейсам: запускаем сервер RDP на Ubuntu 18.04/XNUMX
Аўтаматычны запуск мэнэджара сесій прапісаны ў файле /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. Акрамя гэтых тэхналогій, ёсць яшчэ адзін цікавы варыянт: якая выкарыстоўвае мадыфікаваны пратакол NX 3 сістэма X2Go. З ёй мы разбяромся ў наступнай публікацыі.

VPS на Linux з графічным інтэрфейсам: запускаем сервер RDP на Ubuntu 18.04/XNUMX

Крыніца: habr.com