В ni diskutis pri funkciado de VNC-servilo sur virtuala maŝino de ajna tipo. Ĉi tiu opcio havas multajn malavantaĝojn, la ĉefa el kiuj estas la altaj postuloj por la trafluo de datumaj kanaloj. Hodiaŭ ni provos konektiĝi al grafika labortablo en Linukso per RDP (Remote Desktop Protocol). La VNC-sistemo baziĝas sur elsendado de tabeloj de pikseloj per la protokolo RFB (Remote Framebuffer), kaj RDP permesas sendi pli kompleksajn grafikajn primitivulojn kaj altnivelajn komandojn. Ĝi estas kutime uzata por gastigi Remote Desktop Services en Vindozo, sed serviloj por Linukso ankaŭ haveblas.
Enhavtabelo:
Instalado de la grafika medio
Ni prenos virtualan maŝinon kun Ubuntu Server 18.04 LTS kun du komputilaj kernoj, kvar gigabajtoj da RAM kaj dudek gigabajta malmola disko (HDD). Pli malforta agordo ne taŭgas por grafika labortablo, kvankam tio dependas de la solvitaj taskoj. Ne forgesu uzi reklam-kodon Habrahabr10 por ricevi 10% rabaton sur via mendo.

Instalado de la labortabla medio kun ĉiuj dependecoj estas farita per la sekva komando:
sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utilsKiel en la antaŭa kazo, ni elektis XFCE pro ĝiaj relative malaltaj komputikresursaj postuloj.
Rusigo de la servilo kaj programaro instalado
Ofte virtualaj maŝinoj estas deplojitaj nur kun angla lokalizo. Sur la labortablo vi eble bezonos la rusan, kiu estas facile instalebla. Unue, ni instalu tradukojn por sistemaj programoj:
sudo apt-get install language-pack-ruNi agordu lokalizon:
sudo update-locale LANG=ru_RU.UTF-8La sama efiko povas esti atingita mane redaktante la /etc/default/locale.
Por lokalizado de GNOME kaj KDE, la deponejo havas la pakaĵojn language-pack-gnome-ru kaj language-pack-kde-ru - vi bezonos ilin se vi uzas programojn de ĉi tiuj labortablaj medioj. En XFCE, tradukoj estas instalitaj kun aplikaĵoj. Poste vi povas instali la vortarojn:
# Словари для проверки орфографии
sudo apt-get install hunspell hunspell-ru
# Тезаурус для LibreOffice
sudo apt-get install mythes-ru
# Англо-русский словарь в формате DICT
sudo apt-get install mueller7-dictKrome, instalo de tradukoj povas esti bezonata por iuj aplikaj programoj:
# Браузер 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Ĉi tio kompletigas la preparadon de la labortabla medio, restas nur agordi la RDP-servilon.
Instalado kaj agordo de RDP-servilo
La Ubuntu-deponejoj havas libere distribuitan Xrdp-servilon, kiun ni uzos:
sudo apt-get install xrdpSe ĉio iris bone, la servilo devus komenci aŭtomate:
sudo systemctl status xrdp 
La Xrdp-servilo funkcias kun xrdp-uzantrajtoj kaj defaŭlte prenas la /etc/ssl/private/ssl-cert-snakeoil.key-atestilon, kiu povas esti anstataŭigita per via propra. Por havi aliron por legi la dosieron, vi devas aldoni la uzanton al la grupo ssl-cert:
sudo adduser xrdp ssl-certLa defaŭltaj agordoj troviĝas en la /etc/default/xrdp-dosiero, kaj ĉiuj aliaj servilaj agordaj dosieroj troviĝas en la dosierujo /etc/xrdp. La ĉefaj parametroj estas en la dosiero xrdp.ini, kiu ne bezonas esti ŝanĝita. La agordo estas bone dokumentita, kaj la respondaj manpaĝoj estas inkluzivitaj:
man xrdp.ini
man xrdpRestas nur redakti la skripton /etc/xrdp/startwm.sh, kiu estas ekzekutita kiam la uzantsesio estas pravigita. Unue, ni faru rezervan kopion de la skripto de la distribuo:
sudo mv /etc/xrdp/startwm.sh /etc/xrdp/startwm.b
sudo nano /etc/xrdp/startwm.shPor komenci la labortablan medion XFCE, vi bezonos skripton kiel ĉi tion:
#!/bin/sh
if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG LANGUAGE
fi
exec /usr/bin/startxfce4Bonvolu noti: en skriptoj estas pli bone skribi la plenan vojon al la plenumeblaj dosieroj - tio estas bona kutimo. Ni faru la skripton plenumebla kaj ĉe ĉi tiu punkto la aranĝo de la Xrdp-servilo povas esti konsiderata kompleta:
sudo chmod 755 /etc/xrdp/startwm.shRekomencu la servilon:
sudo systemctl restart xrdp
Agordo de fajroŝirmilo
Defaŭlte, Xrdp aŭskultas TCP-havenon 3389 sur ĉiuj interfacoj. Depende de la virtuala servila agordo, vi eble bezonos agordi Netfilter fajroŝirmilon. En Linukso tio estas kutime farita per la ilo iptables, sed en Ubuntu estas pli bone uzi ufw. Se la IP-adreso de la kliento estas konata, agordo estas farita per la sekva komando:
sudo ufw allow from IP_Address to any port 3389Vi povas permesi konektojn de iu ajn IP kiel ĉi tio:
sudo ufw allow 3389La RDP-protokolo subtenas ĉifradon, sed elmontri la Xrdp-servilon al publikaj retoj estas malbona ideo. Se la kliento ne havas fiksan IP, la servilo nur aŭskultu lokagastiganton por pliigi sekurecon. Plej bone estas aliri ĝin per SSH-tunelo, kiu sekure redirektos trafikon de la klienta komputilo. Ni havas similan aliron por VNC-servilo.
Konektante al RDP-servilo
Por labori kun la labortabla medio, estas pli bone krei apartan senprivilegian uzanton:
sudo adduser rdpuser 
Ni aldonu la uzanton al la sudo-grupo, por ke li povu plenumi administrado-rilatajn taskojn. Se ne ekzistas tia bezono, vi povas preterlasi ĉi tiun paŝon:
sudo gpasswd -a rdpuser sudoVi povas konektiĝi al la servilo uzante ajnan RDP-klienton, inkluzive de la enkonstruita kliento de Windows Remote Desktop Services. Se Xrdp aŭskultas la eksteran interfacon, neniuj aldonaj agoj estos bezonataj. Sufiĉas specifi la IP-adreson de VPS, uzantnomon kaj pasvorton en la konekto-agordoj. Post konekto, ni vidos ion tian:

Post la komenca agordo de la labortabla medio, ni ricevos plenan labortablon. Kiel vi povas vidi, ĝi ne konsumas multajn rimedojn, kvankam ĉio dependos de la aplikaĵoj uzataj.

Se la Xrdp-servilo aŭskultas nur lokagastiganton, la trafiko sur la klienta komputilo devos esti pakita en SSH-tunelo (sshd devas funkcii sur la VPS). En Vindozo, vi povas uzi grafikan SSH-klienton (ekzemple PuTTY), kaj en UNIX-sistemoj vi bezonas la ssh-ilaĵon:
ssh -L 3389:127.0.0.1:3389 -C -N -l rdpuser RDP_server_ipPost kiam la tunelo estas pravigita, la RDP-kliento ne plu konektos al la fora servilo, sed al la loka gastiganto.
Pli malfacilas kun porteblaj aparatoj: SSH-klientoj kapablaj levi tunelon devos esti aĉetitaj, kaj en iOS kaj iPadOS, la fona funkciado de triaj aplikaĵoj malfacilas pro tro bona optimumigo de energikonsumo. En iPhone kaj iPad, vi ne povos krei tunelon en aparta aplikaĵo; vi bezonos rikoltilan aplikaĵon, kiu povas mem establi RDP-konekton per SSH. Kiel ekzemple .
Session Manager kaj Uzanto-Sesioj
La kapablo al pluruza laboro estas efektivigita rekte en la Xrdp-servilo kaj ne postulas plian agordon. Post ekfunkciigo de la servo per systemd, unu procezo funkcias en demona reĝimo, aŭskultas sur la haveno 3389 kaj komunikas per localhost kun la seanca administranto.
ps aux |grep xrdp 
sudo netstat -ap |grep xrdp 
La seanca administranto kutime ne videblas por uzantoj, ĉar la ensaluto kaj pasvorto specifitaj en la klientaj agordoj estas aŭtomate translokigitaj al ĝi. Se ĉi tio ne okazas aŭ estas eraro dum aŭtentigo, interaga ensaluta fenestro aperos anstataŭ la labortablo.

Aŭtomata lanĉo de la seanca administranto estas specifita en la dosiero /etc/default/xrdp, kaj la agordo estas konservita en /etc/xrdp/sesman.ini. Defaŭlte ĝi aspektas kiel ĉi tio:
[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]Vi ne devas ŝanĝi ion ĉi tie, vi nur devas malŝalti ensaluti kun radikrajtoj (AllowRootLogin=false). Por ĉiu uzanto rajtigita en la sistemo, aparta xrdp-procezo estas lanĉita: se vi malkonektos sen fini la seancon, uzantprocezoj daŭre ruliĝos defaŭlte, kaj vi povas denove konektiĝi al la sesio. Agordoj povas esti ŝanĝitaj en la dosiero /etc/xrdp/sesman.ini (sekcio [Sesioj]).
Ŝanĝi klavaran aranĝojn
Kutime ne estas problemoj kun dudirekta tondujo, sed kun la rusa klavararanĝo vi devos iomete ludi (la rusa lokado devus esti jam ). Ni redaktu la klavarajn agordojn de la Xrdp-servilo:
sudo nano /etc/xrdp/xrdp_keyboard.iniVi devas aldoni la sekvajn liniojn al la fino de la agorda dosiero:
[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,ruRestas nur konservi la dosieron kaj rekomenci Xrdp:
sudo systemctl restart xrdpKiel vi povas vidi, ne estas malfacile agordi RDP-servilon sur Linukso VPS, sed Ni jam diskutis pri la agordo de VNC. Krom ĉi tiuj teknologioj, ekzistas alia interesa opcio: la sistemo X3Go uzante modifitan protokolon NX 2. Ni pritraktos ĝin en la venonta eldonaĵo.
fonto: www.habr.com
