Μερικοί χρήστες νοικιάζουν σχετικά φθηνό VPS με Windows για να εκκινήσετε την υπηρεσία Απομακρυσμένης Επιφάνειας Εργασίας. Το ίδιο μπορεί να γίνει και σε Linux Χωρίς να φιλοξενείτε το δικό σας υλικό σε ένα κέντρο δεδομένων ή να νοικιάζετε έναν αποκλειστικό διακομιστή. Άλλοι χρειάζονται ένα οικείο γραφικό περιβάλλον για δοκιμές και ανάπτυξη ή μια απομακρυσμένη επιφάνεια εργασίας με σύνδεση ευρυζωνικής σύνδεσης για εργασία από κινητές συσκευές. Υπάρχουν πολλές εφαρμογές για το Virtual Network Computing (VNC) που βασίζεται στο πρωτόκολλο Remote FrameBuffer (RFB). Σε αυτό το σύντομο άρθρο, θα εξηγήσουμε πώς να το ρυθμίσετε σε μια εικονική μηχανή με οποιονδήποτε hypervisor.
Πίνακας περιεχομένων:
Επιλογή διακομιστή VNC
Η υπηρεσία VNC μπορεί να ενσωματωθεί στο σύστημα εικονικοποίησης και ο hypervisor θα τη συνδέσει με τις εξομοιούμενες συσκευές και δεν θα απαιτείται πρόσθετη ρύθμιση παραμέτρων. Αυτή η επιλογή περιλαμβάνει σημαντικές επιβαρύνσεις και δεν υποστηρίζεται από όλους τους παρόχους - ακόμη και σε μια υλοποίηση που απαιτεί λιγότερους πόρους, όταν αντί να εξομοιωθεί μια πραγματική συσκευή γραφικών, μια απλοποιημένη αφαίρεση (framebuffer) μεταφέρεται στην εικονική μηχανή. Μερικές φορές ένας διακομιστής VNC συνδέεται με έναν διακομιστή Χ που λειτουργεί, αλλά αυτή η μέθοδος είναι πιο κατάλληλη για πρόσβαση σε ένα φυσικό μηχάνημα και σε ένα εικονικό δημιουργεί ορισμένες τεχνικές δυσκολίες. Ο ευκολότερος τρόπος εγκατάστασης ενός διακομιστή VNC είναι με έναν ενσωματωμένο διακομιστή X. Δεν απαιτεί φυσικές συσκευές (προσαρμογέας βίντεο, πληκτρολόγιο και ποντίκι) ή την εξομοίωση τους με χρήση hypervisor και επομένως είναι κατάλληλο για κάθε τύπο VPS.
Εγκατάσταση και διαμόρφωση
Θα χρειαστούμε μια εικονική μηχανή με Ubuntu Διακομιστής 18.04 LTS στην προεπιλεγμένη διαμόρφωσή του. Τα τυπικά αποθετήρια αυτής της διανομής περιλαμβάνουν αρκετούς διακομιστές VNC: , , και άλλοι. Εγκατασταθήκαμε στο TigerVNC - ένα τρέχον πιρούνι του TightVNC, το οποίο δεν υποστηρίζεται από τον προγραμματιστή. Η εγκατάσταση άλλων διακομιστών γίνεται με παρόμοιο τρόπο. Πρέπει επίσης να επιλέξετε ένα περιβάλλον επιφάνειας εργασίας: η βέλτιστη επιλογή, κατά τη γνώμη μας, θα ήταν το XFCE λόγω των σχετικά χαμηλών απαιτήσεων για υπολογιστικούς πόρους. Όσοι επιθυμούν μπορούν να εγκαταστήσουν ένα άλλο DE ή WM: όλα εξαρτώνται από τις προσωπικές προτιμήσεις, αλλά η επιλογή του λογισμικού επηρεάζει άμεσα την ανάγκη για RAM και πυρήνες υπολογιστών.

Η εγκατάσταση του περιβάλλοντος επιφάνειας εργασίας με όλες τις εξαρτήσεις γίνεται με την ακόλουθη εντολή:
sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utilsΣτη συνέχεια, πρέπει να εγκαταστήσετε τον διακομιστή VNC:
sudo apt-get install tigervnc-standalone-server tigervnc-commonΗ εκτέλεση του ως superuser είναι κακή ιδέα. Δημιουργία χρήστη και ομάδας:
sudo adduser vnc 
Ας προσθέσουμε τον χρήστη στην ομάδα sudo ώστε να μπορεί να εκτελεί εργασίες που σχετίζονται με τη διαχείριση. Εάν δεν υπάρχει τέτοια ανάγκη, μπορείτε να παραλείψετε αυτό το βήμα:
sudo gpasswd -a vnc sudoΤο επόμενο βήμα είναι να εκτελέσετε τον διακομιστή VNC με δικαιώματα χρήστη vnc για να δημιουργήσετε έναν ασφαλή κωδικό πρόσβασης και αρχεία διαμόρφωσης στον κατάλογο ~/.vnc/. Το μήκος του κωδικού πρόσβασης μπορεί να είναι από 6 έως 8 χαρακτήρες (οι επιπλέον χαρακτήρες αποκόπτονται). Εάν είναι απαραίτητο, ορίζεται επίσης ένας κωδικός πρόσβασης μόνο για προβολή, π.χ. χωρίς πρόσβαση σε πληκτρολόγιο και ποντίκι. Οι ακόλουθες εντολές εκτελούνται ως χρήστης vnc:
su - vnc
vncserver -localhost no 
Από προεπιλογή, το πρωτόκολλο RFB χρησιμοποιεί το εύρος θυρών TCP από 5900 έως 5906 - αυτό είναι το λεγόμενο. θύρες οθόνης, καθεμία από τις οποίες αντιστοιχεί σε μια οθόνη διακομιστή X. Σε αυτήν την περίπτωση, οι θύρες συνδέονται με οθόνες από :0 έως :6. Η παρουσία διακομιστή VNC που ξεκινήσαμε ακούει τη θύρα 5901 (οθόνη: 1). Άλλα στιγμιότυπα μπορούν να λειτουργήσουν σε άλλες θύρες με οθόνες :2, :3, κ.λπ. Πριν από περαιτέρω διαμόρφωση, πρέπει να σταματήσετε τον διακομιστή:
vncserver -kill :1Η εντολή θα πρέπει να εμφανίζει κάπως έτσι: "Killing Xtigervnc process ID 18105... success!"
Όταν ξεκινά το TigerVNC, εκτελεί το σενάριο ~/.vnc/xstartup για να διαμορφώσει τις ρυθμίσεις διαμόρφωσης. Ας δημιουργήσουμε το δικό μας σενάριο, αποθηκεύοντας πρώτα ένα αντίγραφο ασφαλείας του υπάρχοντος, αν υπάρχει:
mv ~/.vnc/xstartup ~/.vnc/xstartup.b
nano ~/.vnc/xstartupΗ περίοδος λειτουργίας περιβάλλοντος επιφάνειας εργασίας XFCE ξεκινά με την ακόλουθη δέσμη ενεργειών xstartup:
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xrdb $HOME/.Xresources
exec /usr/bin/startxfce4 &Η εντολή xrdb απαιτείται για να διαβάσει το VNC το αρχείο .Xresources στον αρχικό κατάλογο. Εκεί ο χρήστης μπορεί να ορίσει διάφορες γραφικές ρυθμίσεις επιφάνειας εργασίας: απόδοση γραμματοσειράς, χρώματα τερματικού, θέματα δρομέα κ.λπ. Το σενάριο πρέπει να γίνει εκτελέσιμο:
chmod 755 ~/.vnc/xstartupΑυτό ολοκληρώνει τη ρύθμιση διακομιστή VNC. Εάν το εκτελέσετε με την εντολή vncserver -localhost no (ως χρήστης vnc), μπορείτε να συνδεθείτε με τον κωδικό πρόσβασης που καθορίσατε προηγουμένως και να δείτε την ακόλουθη εικόνα:

Εκκίνηση υπηρεσίας μέσω systemd
Η μη αυτόματη εκκίνηση ενός διακομιστή VNC δεν είναι κατάλληλη για χρήση σε μάχη, επομένως θα διαμορφώσουμε μια υπηρεσία συστήματος. Οι εντολές εκτελούνται ως root (χρησιμοποιούμε sudo). Αρχικά, ας δημιουργήσουμε ένα νέο αρχείο μονάδας για τον διακομιστή μας:
sudo nano /etc/systemd/system/vncserver@.serviceΤο σύμβολο @ στο όνομα σάς επιτρέπει να μεταφέρετε ένα όρισμα για τη διαμόρφωση της υπηρεσίας. Στην περίπτωσή μας, καθορίζει τη θύρα εμφάνισης VNC. Το αρχείο μονάδας αποτελείται από πολλές ενότητες:
[Unit]
Description=TigerVNC server
After=syslog.target network.target
[Service]
Type=simple
User=vnc
Group=vnc
WorkingDirectory=/home/vnc
PIDFile=/home/vnc/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x960 :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.targetΣτη συνέχεια, πρέπει να ειδοποιήσετε το systemd για το νέο αρχείο και να το ενεργοποιήσετε:
sudo systemctl daemon-reload
sudo systemctl enable vncserver@1.serviceΟ αριθμός 1 στο όνομα καθορίζει τον αριθμό οθόνης.
Σταματήστε τον διακομιστή VNC, ξεκινήστε τον ως υπηρεσία και ελέγξτε την κατάσταση:
# от имени пользователя vnc
vncserver -kill :1# с привилегиями суперпользователя
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1Εάν η υπηρεσία λειτουργεί, θα πρέπει να λάβουμε κάτι τέτοιο.

Σύνδεση επιφάνειας εργασίας
Η διαμόρφωσή μας δεν χρησιμοποιεί κρυπτογράφηση, επομένως τα πακέτα δικτύου μπορούν να υποκλαπούν από εισβολείς. Επιπλέον, σε διακομιστές VNC αρκετά συχνά , επομένως δεν έχει νόημα να τα ανοίξετε στην πρόσβαση στο διαδίκτυο. Για να συνδεθείτε με ασφάλεια στον τοπικό σας υπολογιστή, πρέπει να διοχετεύσετε την κυκλοφορία σας σε μια σήραγγα SSH και, στη συνέχεια, να διαμορφώσετε τον πελάτη VNC. Windows Μπορείτε να χρησιμοποιήσετε ένα γραφικό πρόγραμμα-πελάτη SSH (όπως το PuTTY). Για λόγους ασφαλείας, το TigerVNC στον διακομιστή ακούει μόνο τον localhost και δεν είναι άμεσα προσβάσιμο από δημόσια δίκτυα:
sudo netstat -ap |more 
В Linux, FreeBSD, OS X και άλλα λειτουργικά συστήματα τύπου UNIX, δημιουργείται μια σήραγγα από τον υπολογιστή-πελάτη χρησιμοποιώντας το βοηθητικό πρόγραμμα ssh (το sshd πρέπει να εκτελείται στον διακομιστή VNC):
ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ipΗ επιλογή -L συνδέει τη θύρα 5901 της απομακρυσμένης σύνδεσης με τη θύρα 5901 του localhost. Η επιλογή -C ενεργοποιεί τη συμπίεση και η επιλογή -N λέει στο ssh να μην εκτελέσει την απομακρυσμένη εντολή. Η επιλογή -l καθορίζει τη σύνδεση για απομακρυσμένη σύνδεση.
Αφού ρυθμίσετε τη σήραγγα στον τοπικό υπολογιστή, πρέπει να εκκινήσετε τον πελάτη VNC και να δημιουργήσετε μια σύνδεση με τον κεντρικό υπολογιστή 127.0.0.1:5901 (localhost:5901), χρησιμοποιώντας τον κωδικό πρόσβασης που καθορίσατε προηγουμένως για πρόσβαση στον διακομιστή VNC. Μπορούμε πλέον να επικοινωνούμε με ασφάλεια μέσω ενός κρυπτογραφημένου τούνελ με το γραφικό περιβάλλον επιφάνειας εργασίας XFCE στο VPS. Στο στιγμιότυπο οθόνης, το κορυφαίο βοηθητικό πρόγραμμα εκτελείται στον εξομοιωτή τερματικού για να δείξει τη χαμηλή κατανάλωση υπολογιστικών πόρων της εικονικής μηχανής. Τότε όλα θα εξαρτηθούν από τις εφαρμογές των χρηστών.

Εγκατάσταση και ρύθμιση παραμέτρων του διακομιστή VNC στο Linux Αυτό μπορεί να γίνει σχεδόν σε οποιοδήποτε VPS. Δεν απαιτεί δαπανηρές και απαιτητικές σε πόρους διαμορφώσεις με εξομοίωση προσαρμογέα βίντεο ή την αγορά εμπορικών αδειών χρήσης λογισμικού. Εκτός από την επιλογή υπηρεσίας συστήματος που συζητήσαμε, υπάρχουν και άλλες: εκκίνηση σε λειτουργία daemon (μέσω /etc/rc.local) κατά την εκκίνηση του συστήματος ή κατ' απαίτηση μέσω inetd. Η τελευταία είναι χρήσιμη για τη δημιουργία διαμορφώσεων πολλαπλών χρηστών. Ο υπερδιακομιστής διαδικτύου θα εκκινήσει τον διακομιστή VNC και θα συνδέσει τον πελάτη σε αυτόν, και ο διακομιστής VNC θα δημιουργήσει μια νέα οθόνη και θα ξεκινήσει την περίοδο λειτουργίας. Ένας διαχειριστής γραφικής απεικόνισης (π.χ. ), και μετά την αποσύνδεση του πελάτη, η συνεδρία θα κλείσει και όλα τα προγράμματα που λειτουργούν με την οθόνη θα τερματιστούν.
Πηγή: www.habr.com
