======VNC (tightvnc) - Aπομακρυσμένη σύνδεση σε γραφικό περιβάλλον ====== Υπάρχουν πολλές υλοποιήσεις του ανοιχτού πρωτοκόλλου vnc για απομακρυσμένη σύνδεση σε γραφικό περιβάλλον. Μία από τις πιο δημοφιλείς και αποτελεσματική είναι το tightvnc. ===== Ρύθμιση server ===== Για να εγκαταστήσουμε τον tightvnc server aptitude install tightvncserver Μετά την εγκατάσταση οι εντολή vncserver είναι πανομοιότυπη με την tightvncserver ==== Εκκίνηση/τερματισμός ==== Αρχικά θα ορίσουμε κωδικούς για πλήρη πρόσβαση και μόνο για προβολή tightvncpasswd Καλή πρακτική είναι να γίνεται σύνδεση πρώτα στο απομακρυσμένο μηχάνημα μέσω ssh και να εκκινείται ο tightvnc server ως tightvncserver με παραμέτρους tightvncserver :1 -geometry 1024x768 -depth 16 -pixelformat rgb565 ή απλά vncserver Για να τερματίσει η 1η vnc συνεδρία που έχουμε εκκινήσει εκτελούμε vncserver -kill :1 (Καθώς μπορούμε να εκτελέσουμε αρκετές συνεδρίες για τις τερματίσουμε, βάζουμε παράμετρο 2 για την 2η, 3 για την 3η κτλ) ==== Εκκίνηση μετά από αίτημα πελάτη - GDM ==== Για να εκκινήσουμε τον vncserver μετά από αίτημα πελάτη, εγκαθιστούμε το openbsd-inetd aptitude install openbsd-inetd Στην συνέχεια προσθέτουμε στο τέλος του αρχείου /etc/services γραμμές όπως οι παρακάτω # Local services vnc-640x480x8 5960/tcp vnc-800x600x8 5961/tcp vnc-800x600x16 5950/tcp vnc-800x600x24 5962/tcp vnc-1024x768x16 5900/tcp vnc-1024x768x24 5963/tcp Αυτό σημαίνει ότι μετά από αίτηση στην vnc οθόνη :0 ο vncserver θα εκτελεστεί σε ανάλυση 1024x768 σε 16bit χρώμα. Αντίστοιχα αίτηση στην οθόνη :50 θα εκκινήσει έναν vncserver σε 800x600 ανάλυση σε 16bit χρώμα //**ΠΡΟΣΟΧΗ! το αρχείο /etc/services μπορεί να αντικατασταθεί σε αναβάθμιση του πακέτου netbase**// Επίσης προσθέτουμε στο αρχείο /etc/inetd.conf, στο τέλος του vnc-640x480x8 stream tcp nowait nobody.tty /usr/bin/Xvnc Xvnc -inetd -query localhost -once -geometry 640x480 -depth 8 vnc-800x600x8 stream tcp nowait nobody.tty /usr/bin/Xvnc Xvnc -inetd -query localhost -once -geometry 800x600 -depth 8 vnc-800x600x16 stream tcp nowait nobody.tty /usr/bin/Xvnc Xvnc -inetd -query localhost -once -geometry 800x600 -depth 16 vnc-800x600x24 stream tcp nowait nobody.tty /usr/bin/Xvnc Xvnc -inetd -query localhost -once -geometry 800x600 -depth 24 vnc-1024x768x16 stream tcp nowait nobody.tty /usr/bin/Xvnc Xvnc -inetd -query localhost -once -geometry 1024x768 -depth 16 vnc-1024x768x24 stream tcp nowait nobody.tty /usr/bin/Xvnc Xvnc -inetd -query localhost -once -geometry 1024x768 -depth 24 Επανεκκινούμε inetd και gdm /etc/init.d/openbsd-inetd restart /etc/init.d/gdm restart Τώρα αρκεί να εκτελέσουμε το vnc χωρίς να ορίσουμε θύρα (προκαθορισμένη 0) για 1024x768x16bit color, ή ορίζοντας να εκτελεστεί σε άλλη ανάλυση και θα εμφανιστεί η οθόνη σύνδεσης του gdm xtightvncviewer 192.168.1.100 -fullscreen ==== Εκκίνηση μετά από αίτημα πελάτη - LIGHTDM ==== Στο αρχείο /etc/lightdm/lightdm.conf, ενεργοποιούμε XDMCP Server αλλά και VNCServer με κάποιες προκαθορισμένες ρυθμίσεις όπως ανάλυση 1024x768, 16bit ανάλυση χρώματος [VNCServer] enabled=true command=/usr/bin/Xvnc -once -SecurityTypes None port=5900 width=1024 height=768 depth=16 [XDMCPServer] enabled=true port=177 Για επιπλέον αναλύσεις εγκαθιστούμε το xinetd apt-get install xinetd vnc4server και δημιουργούμε το αρχείο /etc/xinetd.d/vnc ως εξής service vnc_netbook { disabled = no socket_type = stream protocol = tcp wait = no user = nobody server = /usr/bin/Xvnc server_args = -inetd -once -query localhost -SecurityTypes None -geometry 1024x600 -depth 16 type = UNLISTED port = 5901 } service vnc_workstation { disabled = no socket_type = stream protocol = tcp wait = no user = nobody server = /usr/bin/Xvnc server_args = -inetd -once -query localhost -SecurityTypes None -geometry 1400x900 -depth 16 type = UNLISTED port = 5902 } Επανεκκινούμε τις υπηρεσίες service xinetd restart service lightdm restart Για να συνδεθούμε από clients στον vncserver έστω με ip 192.168.1.10 εκτελούμε xtightvncviewer 192.168.1.10 xtightvncviewer 192.168.1.10:1 xtightvncviewer 192.168.1.10:2 για την κάθε μία από τις 3 αναλύσεις ==== Θύρες ==== Οι θύρες που θα πρέπει να ανοίξουν από κάποιον firewall ή router είναι 5500, 5800 και 5900 έως π.χ. 5910 για 10 συνεδρίες vnc ===== Ρύθμιση client ===== ==== Εγκατάσταση ==== Για να εγκαταστήσουμε τον tightvnc client aptitude install xtightvncviewer Μετά την εγκατάσταση οι εντολή xvncviewer είναι πανομοιότυπη με την xtightvncviewer ==== Σύνδεση ==== === Σύνδεση μέσω τερματικού === Για να συνδεθούμε στον υπολογιστή με όνομα myserver.mydomain.com, στον οποίο έχουμε ήδη εκκινήσει μια συνεδρία vnc, εκτελούμε από τον υπολογιστή-πελάτη xtightvncviewer myserver.mydomain.com:1 Για σύνδεση σε άλλες vnc υλοποιήσεις εξυπηρετητών που δεν κάνουν καλή συμπίεση με ταχύτητες adsl περίπου 256kbps xtightvncviewer myserver.mydomain.com:1 -bgr233 -compresslevel 9 -quality 0 -depth 8 Για ταχύτητες adsl 192kbps έως 1Μbit xtightvncviewer myserver.mydomain.com:1 -compresslevel 9 -quality 5 -depth 16 # (or -depth 8) Για ταχύτητες τοπικού δικτύου xtightvncviewer myserver.mydomain.com:1 -compresslevel 1 -quality 9 -depth 16 === Σύνδεση μέσω γραφικού πελάτη === Στο kde υπάρχει το krdc ==== Ασφαλής Σύνδεση ==== Το πρωτόκολλο vnc από μόνο του δεν υποστηρίζει κρυπτογράφηση. Για το λόγο αυτό συνίσταται να συνδεόμαστε μέσω ssh tunneling, δηλαδή να περνάμε τα δεδομένα μέσω μιας ασφαλής σύνδεσης ssh. Πριν συνδεθούμε με vnc εκκινούμε μια απλή συνεδρία ssh και στον απομακρυσμένο υπολογιστή εκκινούμε τον vncserver vncserver Θα πρέπει να αντιστοιχίσουμε την απομακρυσμένη vnc θύρα π.χ. 5901 σε μια τοπική π.χ. ομοίως στην τοπική 5911. Από το τοπικό μηχάνημα λοιπόν εκτελούμε : ssh -L 5911:server.mydomain.com:5901 user@server.mydomain.com Και στην συνέχεια από τον τοπικό υπολογιστή τρέχουμε το πρόγραμμα - πελάτη xtightvncviewer localhost:11 -encoding tight -compresslevel 9 -quality 5 -depth 16 ===== Αντιμετώπιση Προβλημάτων ===== Η υπηρεσία inetd στέλνει τα μηνύματά της στο /var/log/auth.log ===== Δοκιμές ===== Δοκιμές σε * γραμμή 100Mbit * athlon 2200+ ως server (1800 MHz) * celeron mobile 1300 ως πελάτη (2000 Mhz) έδειξαν ότι * ακόμα και divx μπορεί να μεταδοθεί ομαλά σε ανάλυση 320x240 ή ακόμα και 400x300 * Καλύτερη απόδοση είχε το xine σε σχέση με τον mplayer * O mplayer θα πρέπει να χρησιμοποιείται με παραμέτρους όπως * mplayer test.avi -vfm ffmpeg -lavdopts lowres=1:fast:skiploopfilter=all * Αν ως πηγή επιλέξουμε τηλεόραση μπορούμε να δούμε ομαλά με * mplayer σε αναλύσεις 320x240 ή r 400x300 * xdtv ρυθμίζοντας το xdtvrc * fullscreen = 640x480 * windowsize = 400x300 Στατιστικά -Οι cpus client και server πιέστηκαν σε πάνω από 80%, -Για tv με xtightvncviewer σε non-compress mode η ταχύτητα μετάδοσης έφτασε τα 6Mb/s -Με xtightvncviewer -compresslevel 9 έπεσε σε 500Kb/s ===== Πηγές ===== * http://gentoo-wiki.com/HOWTO_Xvnc_terminal_server * http://www.penlug.org/twiki/bin/view/Main/TightVNC * lighdm * http://wiki.linuxservertech.com/index.php?action=artikel&cat=9&id=182&artlang=en * Συγκριτικό * http://www.techradar.com/news/software/applications/7-of-the-best-linux-remote-desktop-clients-716346 * systemd - lightdm - vnc * https://wiki.archlinux.org/index.php/TigerVNC * guacamole * Installation : https://idroot.us/install-apache-guacamole-ubuntu-20-04/