В разговарали смо о покретању ВНЦ сервера на виртуелној машини било ког типа. Ова опција има пуно недостатака, од којих су главни високи захтеви за пропусност канала за пренос података. Данас ћемо покушати да се повежемо са графичком радном површином на Линук-у преко РДП-а (Ремоте Десктоп Протоцол). ВНЦ систем се заснива на преношењу низова пиксела коришћењем РФБ (Ремоте Фрамебуффер) протокола, а РДП вам омогућава да шаљете сложеније графичке примитиве и команде високог нивоа. Обично се користи за хостовање услуга удаљене радне површине на Виндовс-у, али су доступни и сервери за Линук.
Оглашение:
Инсталирање графичког окружења
Узећемо виртуелну машину са Убунту Сервер 18.04 ЛТС са два рачунарска језгра, четири гигабајта РАМ-а и хард диском од двадесет гигабајта (ХДД). Слабија конфигурација није погодна за графичку радну површину, иако то зависи од задатака који се решавају. Не заборавите да користите промо код Хабрахабр10 да бисте добили 10% попуста на своју поруџбину.

Инсталирање десктоп окружења са свим зависностима врши се следећом командом:
sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utilsКао иу претходном случају, изабрали смо КСФЦЕ због релативно ниских захтева за рачунарским ресурсима.
Русификација сервера и инсталација софтвера
Често се виртуелне машине постављају само са енглеском локализацијом. На радној површини ће вам можда требати руски језик, који је лако подесити. Прво, хајде да инсталирамо преводе за системске програме:
sudo apt-get install language-pack-ruХајде да поставимо локализацију:
sudo update-locale LANG=ru_RU.UTF-8Исти ефекат се може постићи ручним уређивањем /етц/дефаулт/лоцале.
За локализацију ГНОМЕ-а и КДЕ-а, спремиште има пакете лангуаге-пацк-гноме-ру и лангуаге-пацк-кде-ру - биће вам потребни ако користите програме из ових десктоп окружења. У КСФЦЕ, преводи се инсталирају са апликацијама. Затим можете инсталирати речнике:
# Словари для проверки орфографии
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Овим је завршена припрема десктоп окружења, остаје само да се конфигурише РДП сервер.
Инсталирање и конфигурисање РДП сервера
Убунту спремишта имају слободно дистрибуиран Ксрдп сервер, који ћемо користити:
sudo apt-get install xrdpАко је све прошло добро, сервер би требало да се покрене аутоматски:
sudo systemctl status xrdp 
Ксрдп сервер ради са крдп корисничким правима и подразумевано узима /етц/ссл/привате/ссл-церт-снакеоил.кеи сертификат, који се може заменити вашим. Да бисте имали приступ читању датотеке, потребно је да додате корисника у ссл-церт групу:
sudo adduser xrdp ssl-certПодразумеване поставке се могу наћи у датотеци /етц/дефаулт/крдп, а све остале конфигурационе датотеке сервера се налазе у директоријуму /етц/крдп. Главни параметри се налазе у датотеци крдп.ини, коју не треба мењати. Конфигурација је добро документована, а укључене су и одговарајуће ман-странице:
man xrdp.ini
man xrdpОстаје само да уредите /етц/крдп/стартвм.сх скрипту, која се извршава када се иницијализује корисничка сесија. Прво, направимо резервну копију скрипте из дистрибуције:
sudo mv /etc/xrdp/startwm.sh /etc/xrdp/startwm.b
sudo nano /etc/xrdp/startwm.shДа бисте покренули КСФЦЕ десктоп окружење, требаће вам скрипта отприлике овако:
#!/bin/sh
if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG LANGUAGE
fi
exec /usr/bin/startxfce4Имајте на уму: у скриптама је боље написати пуну путању до извршних датотека - то је добра навика. Хајде да учинимо скрипту извршном и у овом тренутку се подешавање Ксрдп сервера може сматрати завршеним:
sudo chmod 755 /etc/xrdp/startwm.shПоново покрените сервер:
sudo systemctl restart xrdp
Постављање заштитног зида
Ксрдп подразумевано слуша ТЦП порт 3389 на свим интерфејсима. У зависности од конфигурације виртуелног сервера, можда ћете морати да конфигуришете заштитни зид Нетфилтер. На Линук-у се то обично ради помоћу услужног програма иптаблес, али на Убунту-у је боље користити уфв. Ако је ИП адреса клијента позната, конфигурација се врши следећом командом:
sudo ufw allow from IP_Address to any port 3389Можете дозволити везе са било које ИП адресе на следећи начин:
sudo ufw allow 3389РДП протокол подржава шифровање, али излагање Ксрдп сервера јавним мрежама је лоша идеја. Ако клијент нема фиксну ИП адресу, сервер би требало да слуша само лоцалхост да би повећао безбедност. Најбоље му је приступити преко ССХ тунела, који ће безбедно преусмерити саобраћај са клијентског рачунара. Имамо сличан приступ за ВНЦ сервер.
Повезивање на РДП сервер
Да бисте радили са радним окружењем, боље је да направите засебног непривилегованог корисника:
sudo adduser rdpuser 
Хајде да додамо корисника у судо групу како би могао да обавља задатке везане за администрацију. Ако нема такве потребе, можете прескочити овај корак:
sudo gpasswd -a rdpuser sudoМожете се повезати са сервером помоћу било ког РДП клијента, укључујући уграђени Виндовс клијент услуга удаљене радне површине. Ако Ксрдп слуша екстерни интерфејс, додатне радње неће бити потребне. Довољно је навести ВПС ИП адресу, корисничко име и лозинку у подешавањима везе. Након повезивања, видећемо нешто овако:

Након почетног подешавања десктоп окружења, добићемо пуноправну радну површину. Као што видите, не троши много ресурса, иако ће све зависити од апликација које се користе.

Ако Ксрдп сервер слуша само лоцалхост, саобраћај на клијентском рачунару ће морати да буде спакован у ССХ тунел (ссхд мора да ради на ВПС-у). На Виндовс-у можете користити графички ССХ клијент (на пример, ПуТТИ), а на УНИКС системима вам је потребан ссх услужни програм:
ssh -L 3389:127.0.0.1:3389 -C -N -l rdpuser RDP_server_ipНакон што се тунел иницијализује, РДП клијент се више неће повезивати на удаљени сервер, већ на локални хост.
Са мобилним уређајима је теже: ССХ клијенти који могу да подигну тунел ће морати да се купе, а у иОС-у и иПадОС-у позадински рад апликација трећих страна је отежан због превише добре оптимизације потрошње енергије. На иПхоне-у и иПад-у нећете моћи да креирате тунел у засебној апликацији; биће вам потребна апликација за харвестер која сама може да успостави РДП везу преко ССХ-а. Као што је нпр .
Менаџер сесија и корисничке сесије
Могућност вишекорисничког рада имплементирана је директно у Ксрдп сервер и не захтева додатну конфигурацију. Након покретања услуге преко системд-а, један процес ради у демонском режиму, слуша порт 3389 и комуницира преко локалног хоста са менаџером сесије.
ps aux |grep xrdp 
sudo netstat -ap |grep xrdp 
Менаџер сесија обично није видљив корисницима, јер се на њега аутоматски преносе логин и лозинка наведени у подешавањима клијента. Ако се то не догоди или дође до грешке током аутентификације, уместо радне површине ће се појавити интерактивни прозор за пријаву.

Аутоматско покретање менаџера сесије је наведено у /етц/дефаулт/крдп датотеци, а конфигурација се чува у /етц/крдп/сесман.ини. Подразумевано изгледа отприлике овако:
[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]Овде не морате ништа да мењате, само морате да онемогућите пријављивање са роот правима (АлловРоотЛогин=фалсе). За сваког корисника овлашћеног у систему, покреће се посебан крдп процес: ако прекинете везу без завршетка сесије, кориснички процеси ће наставити да се покрећу подразумевано и можете се поново повезати на сесију. Подешавања се могу променити у датотеци /етц/крдп/сесман.ини (одељак [Сесије]).
Промена распореда тастатуре
Обично нема проблема са двосмерним међуспремником, али са руским распоредом тастатуре мораћете мало да се поиграте (руски локал би требало да буде већ ). Уредимо подешавања тастатуре Ксрдп сервера:
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Остаје само да сачувате датотеку и поново покренете Ксрдп:
sudo systemctl restart xrdpКао што видите, није тешко поставити РДП сервер на Линук ВПС, али Већ смо разговарали о подешавању ВНЦ-а. Поред ових технологија, постоји још једна занимљива опција: систем Кс3Го који користи модификовани НКС 2 протокол. О томе ћемо се бавити у следећој публикацији.
Извор: ввв.хабр.цом
