VPS σε Linux με γραφική διεπαφή: εκκίνηση διακομιστή RDP στο Ubuntu 18.04

VPS σε Linux με γραφική διεπαφή: εκκίνηση διακομιστή RDP στο Ubuntu 18.04
В προηγούμενο άρθρο συζητήσαμε τη λειτουργία ενός διακομιστή VNC σε μια εικονική μηχανή οποιουδήποτε τύπου. Αυτή η επιλογή έχει πολλά μειονεκτήματα, το κύριο από τα οποία είναι οι υψηλές απαιτήσεις για την απόδοση των καναλιών μετάδοσης δεδομένων. Σήμερα θα προσπαθήσουμε να συνδεθούμε σε μια γραφική επιφάνεια εργασίας στο Linux μέσω RDP (Remote Desktop Protocol). Το σύστημα VNC βασίζεται στη μετάδοση συστοιχιών pixel χρησιμοποιώντας το πρωτόκολλο RFB (Remote Framebuffer) και το RDP σάς επιτρέπει να στέλνετε πιο σύνθετα γραφικά και εντολές υψηλού επιπέδου. Συνήθως χρησιμοποιείται για τη φιλοξενία υπηρεσιών απομακρυσμένης επιφάνειας εργασίας στα Windows, αλλά διατίθενται επίσης διακομιστές για Linux.

Πίνακας περιεχομένων:

Εγκατάσταση του γραφικού περιβάλλοντος
Ρωσοποίηση του διακομιστή και εγκατάσταση λογισμικού
Εγκατάσταση και διαμόρφωση διακομιστή RDP
Ρύθμιση τείχους προστασίας
Σύνδεση σε διακομιστή RDP
Session Manager και User Sessions
Αλλαγή διατάξεων πληκτρολογίου

Εγκατάσταση του γραφικού περιβάλλοντος

Θα πάρουμε μια εικονική μηχανή με Ubuntu Server 18.04 LTS με δύο πυρήνες υπολογιστών, τέσσερα gigabyte μνήμης RAM και έναν σκληρό δίσκο είκοσι gigabyte (HDD). Μια πιο αδύναμη διαμόρφωση δεν είναι κατάλληλη για μια γραφική επιφάνεια εργασίας, αν και αυτό εξαρτάται από τις εργασίες που επιλύονται. Μην ξεχάσετε να χρησιμοποιήσετε τον κωδικό προσφοράς Habrahabr10 για να λάβετε έκπτωση 10% στην παραγγελία σας.

VPS σε Linux με γραφική διεπαφή: εκκίνηση διακομιστή RDP στο Ubuntu 18.04
Η εγκατάσταση του περιβάλλοντος επιφάνειας εργασίας με όλες τις εξαρτήσεις γίνεται με την ακόλουθη εντολή:

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
Ο διακομιστής 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
Ας προσθέσουμε τον χρήστη στην ομάδα sudo ώστε να μπορεί να εκτελεί εργασίες που σχετίζονται με τη διαχείριση. Εάν δεν υπάρχει τέτοια ανάγκη, μπορείτε να παραλείψετε αυτό το βήμα:

sudo gpasswd -a rdpuser sudo

Μπορείτε να συνδεθείτε στο διακομιστή χρησιμοποιώντας οποιοδήποτε πρόγραμμα-πελάτη RDP, συμπεριλαμβανομένου του ενσωματωμένου προγράμματος-πελάτη υπηρεσιών απομακρυσμένης επιφάνειας εργασίας των Windows. Εάν το Xrdp ακούει την εξωτερική διεπαφή, δεν θα χρειαστούν πρόσθετες ενέργειες. Αρκεί να καθορίσετε τη διεύθυνση IP VPS, το όνομα χρήστη και τον κωδικό πρόσβασης στις ρυθμίσεις σύνδεσης. Μετά τη σύνδεση, θα δούμε κάτι σαν αυτό:

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

VPS σε Linux με γραφική διεπαφή: εκκίνηση διακομιστή RDP στο Ubuntu 18.04
Εάν ο διακομιστής 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. Όπως για παράδειγμα Remoter Pro.

Session Manager και User Sessions

Η δυνατότητα εργασίας πολλών χρηστών υλοποιείται απευθείας στον διακομιστή Xrdp και δεν απαιτεί πρόσθετες ρυθμίσεις. Μετά την εκκίνηση της υπηρεσίας μέσω systemd, μια διεργασία εκτελείται σε λειτουργία daemon, ακούει στη θύρα 3389 και επικοινωνεί μέσω του localhost με τον διαχειριστή συνεδρίας.

ps aux |grep xrdp

VPS σε Linux με γραφική διεπαφή: εκκίνηση διακομιστή RDP στο Ubuntu 18.04

sudo netstat -ap |grep xrdp

VPS σε Linux με γραφική διεπαφή: εκκίνηση διακομιστή RDP στο Ubuntu 18.04
Ο διαχειριστής συνεδρίας συνήθως δεν είναι ορατός στους χρήστες, επειδή τα στοιχεία σύνδεσης και ο κωδικός πρόσβασης που καθορίζονται στις ρυθμίσεις του προγράμματος-πελάτη μεταφέρονται αυτόματα σε αυτόν. Εάν αυτό δεν συμβεί ή υπάρχει σφάλμα κατά τον έλεγχο ταυτότητας, θα εμφανιστεί ένα διαδραστικό παράθυρο σύνδεσης αντί για την επιφάνεια εργασίας.

VPS σε Linux με γραφική διεπαφή: εκκίνηση διακομιστή RDP στο Ubuntu 18.04
Η αυτόματη εκκίνηση της διαχείρισης συνεδριών καθορίζεται στο αρχείο /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 σε ένα Linux VPS, αλλά προηγούμενο άρθρο Έχουμε ήδη συζητήσει τη ρύθμιση VNC. Εκτός από αυτές τις τεχνολογίες, υπάρχει μια άλλη ενδιαφέρουσα επιλογή: το σύστημα X3Go χρησιμοποιώντας ένα τροποποιημένο πρωτόκολλο NX 2. Θα ασχοληθούμε με αυτό σε επόμενη δημοσίευση.

VPS σε Linux με γραφική διεπαφή: εκκίνηση διακομιστή RDP στο Ubuntu 18.04

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο