В մենք քննարկել ենք VNC սերվերի գործարկումը ցանկացած տեսակի վիրտուալ մեքենայի վրա: Այս տարբերակն ունի բազմաթիվ թերություններ, որոնցից հիմնականը տվյալների փոխանցման ալիքների թողունակության բարձր պահանջներն են։ Այսօր մենք կփորձենք միանալ Linux-ի գրաֆիկական աշխատասեղանին RDP-ի (Remote Desktop Protocol) միջոցով: VNC համակարգը հիմնված է պիքսելների զանգվածներ փոխանցելու վրա՝ օգտագործելով RFB (Remote Framebuffer) արձանագրությունը, իսկ RDP-ն թույլ է տալիս ուղարկել ավելի բարդ գրաֆիկական պարզունակ և բարձր մակարդակի հրամաններ: Այն սովորաբար օգտագործվում է Windows-ի հեռավոր աշխատասեղանի ծառայությունները հյուրընկալելու համար, սակայն Linux-ի համար նախատեսված սերվերները նույնպես հասանելի են:
Բովանդակություն:
Գրաֆիկական միջավայրի տեղադրում
Մենք կվերցնենք 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 ֆայլում, որը փոփոխության կարիք չունի։ Կազմաձևը լավ փաստաթղթավորված է, և համապատասխան մենեջերը ներառված են.
man xrdp.ini
man xrdpՄնում է միայն խմբագրել /etc/xrdp/startwm.sh սկրիպտը, որը կատարվում է օգտատիրոջ նիստի սկզբնավորման ժամանակ։ Նախ, եկեք ստեղծենք սցենարի կրկնօրինակը բաշխումից.
sudo mv /etc/xrdp/startwm.sh /etc/xrdp/startwm.b
sudo nano /etc/xrdp/startwm.shXFCE աշխատասեղանի միջավայրը սկսելու համար ձեզ հարկավոր է այսպիսի սցենար.
#!/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
Firewall-ի տեղադրում
Լռելյայնորեն, Xrdp-ը լսում է TCP պորտը 3389 բոլոր ինտերֆեյսներում: Կախված վիրտուալ սերվերի կոնֆիգուրացիայից, ձեզ կարող է անհրաժեշտ լինել կարգավորել Netfilter firewall-ը: Linux-ում դա սովորաբար արվում է iptables կոմունալ ծրագրի միջոցով, իսկ Ubuntu-ում ավելի լավ է օգտագործել ufw: Եթե հաճախորդի IP հասցեն հայտնի է, ապա կազմաձևումն իրականացվում է հետևյալ հրամանով.
sudo ufw allow from IP_Address to any port 3389Դուք կարող եք թույլատրել կապեր ցանկացած IP-ից, ինչպես հետևյալը.
sudo ufw allow 3389RDP արձանագրությունն աջակցում է գաղտնագրմանը, սակայն Xrdp սերվերը հանրային ցանցերին բացահայտելը վատ գաղափար է: Եթե հաճախորդը չունի ֆիքսված IP, ապա սերվերը պետք է լսի միայն localhost-ը՝ անվտանգությունը բարձրացնելու համար։ Լավագույնն այն է, որ այն մուտք գործեք SSH թունելի միջոցով, որն ապահով կերպով կուղղորդի երթևեկությունը հաճախորդի համակարգչից: Նման մոտեցում ունենք VNC սերվերի համար:
Միացում RDP սերվերին
Սեղանի միջավայրի հետ աշխատելու համար ավելի լավ է ստեղծել առանձին ոչ արտոնյալ օգտվող.
sudo adduser rdpuser 
Եկեք օգտագործողին ավելացնենք sudo խմբին, որպեսզի նա կարողանա կատարել վարչարարության հետ կապված առաջադրանքներ։ Եթե նման անհրաժեշտություն չկա, կարող եք բաց թողնել այս քայլը.
sudo gpasswd -a rdpuser sudoԴուք կարող եք միանալ սերվերին՝ օգտագործելով ցանկացած RDP հաճախորդ, ներառյալ ներկառուցված Windows Remote Desktop Services հաճախորդը: Եթե Xrdp-ը լսում է արտաքին ինտերֆեյսը, լրացուցիչ գործողություններ չեն պահանջվի: Բավական է միացման կարգավորումներում նշել VPS IP հասցեն, օգտանունը և գաղտնաբառը։ Միանալուց հետո մենք կտեսնենք այսպիսի բան.

Սեղանի միջավայրի նախնական կարգավորումից հետո մենք կստանանք լիարժեք աշխատասեղան: Ինչպես տեսնում եք, այն շատ ռեսուրսներ չի սպառում, չնայած ամեն ինչ կախված կլինի օգտագործվող հավելվածներից:

Եթե 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-ի միջոցով: Ինչպիսին, օրինակ .
Նիստի մենեջեր և օգտագործողների նստաշրջաններ
Բազմ օգտատերերի աշխատանքի հնարավորությունն իրականացվում է անմիջապես Xrdp սերվերում և չի պահանջում լրացուցիչ կոնֆիգուրացիա: Systemd-ի միջոցով ծառայությունը սկսելուց հետո մեկ պրոցես աշխատում է daemon ռեժիմով, լսում է 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]Այստեղ դուք ոչինչ փոխելու կարիք չունեք, պարզապես պետք է անջատեք մուտքը արմատային իրավունքներով (AllowRootLogin=false): Համակարգում լիազորված յուրաքանչյուր օգտատիրոջ համար գործարկվում է առանձին xrdp պրոցես. եթե անջատեք առանց սեսիան ավարտելու, օգտվողի պրոցեսները կշարունակեն գործել լռելյայն, և դուք կարող եք նորից միանալ նիստին: Կարգավորումները կարող են փոխվել /etc/xrdp/sesman.ini ֆայլում ([Sessions] բաժնում):
Ստեղնաշարի դասավորությունների փոխարկում
Երկկողմանի clipboard-ի հետ կապված խնդիրներ սովորաբար չկան, բայց ռուսական ստեղնաշարի դասավորության հետ դուք պետք է մի փոքր խաղաք (ռուսերենի տեղայնացումը պետք է արդեն լինի ) Եկեք խմբագրենք 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Ինչպես տեսնում եք, Linux VPS-ի վրա RDP սերվեր ստեղծելը դժվար չէ, բայց Մենք արդեն քննարկել ենք VNC-ի տեղադրումը: Բացի այս տեխնոլոգիաներից, կա ևս մեկ հետաքրքիր տարբերակ՝ X3Go համակարգը՝ օգտագործելով փոփոխված NX 2 արձանագրությունը։ Դրանով կզբաղվենք հաջորդ հրապարակման մեջ։
Source: www.habr.com
