В Έχουμε καλύψει την εκτέλεση ενός διακομιστή VNC σε οποιονδήποτε τύπο εικονικής μηχανής. Αυτή η επιλογή έχει πολλά μειονεκτήματα, το κύριο από τα οποία είναι οι υψηλές απαιτήσεις για το εύρος ζώνης των καναλιών μετάδοσης δεδομένων. Σήμερα θα προσπαθήσουμε να συνδεθούμε σε μια γραφική επιφάνεια εργασίας σε Linux μέσω RDP (Remote Desktop Protocol). Το σύστημα VNC βασίζεται στη μετάδοση συστοιχιών εικονοστοιχείων μέσω του πρωτοκόλλου RFB (Remote Framebuffer), ενώ το RDP επιτρέπει την αποστολή πιο σύνθετων γραφικών πρωτογενών στοιχείων και εντολών υψηλού επιπέδου. Συνήθως χρησιμοποιείται για τη φιλοξενία υπηρεσιών απομακρυσμένης επιφάνειας εργασίας σε Windows, αλλά διατίθενται και διακομιστές για Linux.
Πίνακας περιεχομένων:
Εγκατάσταση του γραφικού περιβάλλοντος
Θα πάρουμε μια εικονική μηχανή με Ubuntu Server 18.04 LTS με δύο πυρήνες υπολογιστών, τέσσερα gigabytes μνήμης RAM και έναν σκληρό δίσκο (HDD) είκοσι gigabytes. Μια πιο αδύναμη διαμόρφωση δεν είναι κατάλληλη για μια γραφική επιφάνεια εργασίας, αν και αυτό εξαρτάται από τις εργασίες που επιλύονται. Μην ξεχάσετε να χρησιμοποιήσετε τον κωδικό προσφοράς 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
Υπάρχει ένας ελεύθερα κατανεμημένος διακομιστής Xrdp στα αποθετήρια του Ubuntu, τον οποίο θα χρησιμοποιήσουμε:
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.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, ο διακομιστής θα πρέπει να ακούει μόνο στον τοπικό κεντρικό υπολογιστή για βελτίωση της ασφάλειας. Είναι καλύτερο να ρυθμίσετε την πρόσβαση σε αυτό μέσω μιας σήραγγας SSH, η οποία θα ανακατευθύνει με ασφάλεια την κυκλοφορία από τον υπολογιστή-πελάτη. Ακολουθούμε μια παρόμοια προσέγγιση για διακομιστή VNC.
Σύνδεση με διακομιστή RDP
Για να εργαστείτε με το περιβάλλον επιφάνειας εργασίας, είναι καλύτερο να δημιουργήσετε έναν ξεχωριστό χρήστη χωρίς δικαιώματα:
sudo adduser rdpuser 
Ας προσθέσουμε τον χρήστη στην ομάδα sudo ώστε να μπορεί να εκτελεί εργασίες που σχετίζονται με τη διαχείριση. Εάν δεν υπάρχει τέτοια ανάγκη, μπορείτε να παραλείψετε αυτό το βήμα:
sudo gpasswd -a rdpuser sudoΜπορείτε να συνδεθείτε στον διακομιστή χρησιμοποιώντας οποιοδήποτε πρόγραμμα-πελάτη RDP, συμπεριλαμβανομένου του ενσωματωμένου προγράμματος-πελάτη των Υπηρεσιών Απομακρυσμένης Επιφάνειας Εργασίας των Windows. Εάν το Xrdp ακούει στην εξωτερική διεπαφή, δεν απαιτούνται πρόσθετα βήματα. Αρκεί να καθορίσετε τη διεύθυνση IP του VPS, το όνομα χρήστη και τον κωδικό πρόσβασης στις ρυθμίσεις σύνδεσης. Αφού συνδεθούμε, θα δούμε κάτι σαν αυτό:

Μετά την αρχική εγκατάσταση του περιβάλλοντος εργασίας, θα έχουμε μια πλήρη επιφάνεια εργασίας. Όπως μπορείτε να δείτε, δεν καταναλώνει πολλούς πόρους, αν και στη συνέχεια όλα θα εξαρτηθούν από τις εφαρμογές που χρησιμοποιούνται.

Εάν ο διακομιστής 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, δεν θα μπορείτε να ρυθμίσετε μια σήραγγα σε ξεχωριστή εφαρμογή - θα χρειαστείτε μια εφαρμογή combine που μπορεί η ίδια να δημιουργήσει μια σύνδεση 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]Δεν χρειάζεται να αλλάξετε τίποτα εδώ, απλώς πρέπει να απαγορεύσετε τη σύνδεση με δικαιώματα root (AllowRootLogin=false). Για κάθε χρήστη που συνδέεται στο σύστημα, ξεκινά μια ξεχωριστή διεργασία xrdp: εάν αποσυνδεθείτε χωρίς να τερματίσετε την περίοδο λειτουργίας, οι διεργασίες χρήστη θα συνεχίσουν να εκτελούνται από προεπιλογή και μπορείτε να συνδεθείτε ξανά στην περίοδο λειτουργίας. Οι ρυθμίσεις μπορούν να αλλάξουν στο αρχείο /etc/xrdp/sesman.ini (ενότητα [Συνεδρίες]).
Αλλαγή διατάξεων πληκτρολογίου
Συνήθως δεν υπάρχουν προβλήματα με το αμφίδρομο πρόχειρο, αλλά με τη διάταξη πληκτρολογίου για τα ρωσικά θα πρέπει να κάνετε κάποια μαγεία (η ρωσική τοπική ρύθμιση θα πρέπει ήδη να είναι διαθέσιμη) ). Ας επεξεργαστούμε τις ρυθμίσεις πληκτρολογίου του διακομιστή 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 Linux δεν είναι δύσκολη και... Έχουμε ήδη καλύψει την εγκατάσταση του VNC. Εκτός από αυτές τις τεχνολογίες, υπάρχει μια άλλη ενδιαφέρουσα επιλογή: το σύστημα X3Go, το οποίο χρησιμοποιεί ένα τροποποιημένο πρωτόκολλο NX 2. Θα το αντιμετωπίσουμε σε επόμενη δημοσίευση.
Πηγή: www.habr.com
