Remote access σε server με VNC + γραφικό περιβάλλον LXDE

1 post / 0 new
Εικόνα: dimitris
dimitris
Απουσιάζω!
Registered UserΣυχνός σχολιαστήςModeratorEditor-BloggerAdministrator
Μέλος από: 1 Ιαν 1970
Πόντοι: 12700
Remote access σε server με VNC + γραφικό περιβάλλον LXDE

Είναι πολλές φορές που θες να συνδεθείς στον server σου, αλλά το ssh δεν σου φτάνει. Θες να έχεις κι εκεί γραφικό περιβάλλον είτε γιατί το προτιμάς είτε γιατί θες να κάνεις μια δουλειά που το απαιτεί. Η λύση είναι απλή και γίνεται με συνδυασμό ενός VNC server όπως το tightvncserver και ενός απλού/ελαφρού γραφικού περιβάλλοντος, ώστε να μην επιβάρυνεται χωρίς λόγο τον server.

Παρακάτω περιγράφουμε τα βήματα που πρέπει να κάνετε για να αποκτήσετε remote desktop στον server. Χρησιμοποιούμε το default port του tightvnc αλλά για λόγους ασφαλείας περιορίζουμε την πρόσβαση στον vnc server μόνο στο localhost. Οπότε για να δείτε τον server θα πρέπει να κάνετε ssh tunnelling όπως περιγράφουμε στο τέλος.

# 1. ενημέρωση server

apt-get update
apt-get upgrade

# 2. εγκαθιστούμε τα πακέτα στον server

apt-get install nano xorg lxde-core lxde-icon-theme tightvncserver

# Προσοχή: τα περισσότερα tutorials για το θέμα υποθέτουν ότι θα τρέχετε γραφικό
# περιβάλλον σε remote server με δικαιώματα root. Επειδή αυτό δεν είναι καλή ιδέα
# γενικά, καλό είναι να τρέχετε τον vnc με δικαιώματα κάποιου άλλου χρήστη.
# Φτιάχνετε αυτόν τον άλλο χρήστη, π.χ. dimitris, στον remote server

adduser dimitris  
adduser dimitris sudo

# 3. Τώρα, αποσυνδέεστε από root στον server και συνδέεστε με τον νέο χρήστη

# Κάνετε εκκίνηση για πρώτη φορά του vnc server με δικαιώματα απλού χρήστη

tightvncserver :1

# την πρώτη φορά θα ζητήσει να ορίσουμε κωδικό (8 ψηφία) με τον οποίο
# θα συνδεόμαστε από απόσταση.
# Θα ζητήσει και  κωδικό read only πρόσβαση που είναι προαιρετικό.

# 4. Στη συνέχεια, αφού ορίσουμε κωδικό, σταματάμε τον server

tightvncserver -kill :1

# 5. Τώρα, ρυθμίζουμε τον vnc server να "σηκώνει" γραφικό περιβάλλον
# μόλις συνδεόμαστε σε αυτόν. Αυτή η ρύθμιση γίνεται στο αρχείο .vnc/xstartup

nano ~/.vnc/xstartup

# στο αρχείο αυτό βάζουμε σχόλια στη γραμμή  (αν δεν έχει ηδη)

x-window-manager &

# και προσθέτουμε στο τέλος του αρχείου τις εξής 2 γραμμές

    lxterminal &
    /usr/bin/lxsession -s LXDE &

# αποθηκεύουμε το αρχείο [CTRL + X]

# 6. Ξανα ξεκιναμε τον VNC στο display :1
# αυτή τη φορά επιτρέπουμε μόνο συνδέσεις από localhost

tightvncserver -localhost  :1

# τωρα ο VNC τρέχει και δέχεται συνδέσεις από localhost.
# οπότε θα κάνουμε ssh tunnelling για να συνδεθούμε στον server και
# να σηκώσουμε αυτόματα το γραφικό περιβάλλον LXDE

# 7. Ανοίγουμε ένα ssh tunnel στον server (αντικαταστήστε το remote_ip με την IP του server και το 'dimitris' με το όνομα του απλού χρήστη που φτιάξατε)

ssh [email protected]_ip -L 5901:localhost:5901

# H -L παράμετρος ανοίγει το τούνελ από την πόρτα 5901 του υπολογιστή στην πόρτα 5901 του server. H 5901 είναι η default port του tightvnc για το display 1

# ΠΡΟΣΟΧΗ: μην κλείσετε αυτό το παράθυρο όπου έχετε κάνει ssh

# 8. οπότε τώρα, σε ένα άλλο τερματικό του local υπολογιστή μας εγκαθιστούμε τον xtightvncviewer (ή κάποια άλλη εναλλακτική π.χ. στο KDE υπάρχει το krdc που είναι γρηγορότερο)

sudo apt-get install xtightvncviewer

# 9. Είμαστε έτοιμοι. Μπορούμε να συνδεθούμε στο remote desktop από τον υπολογιστή μας με την εντολή:

xtightvncviewer 127.0.0.1:1

# Θα πρέπει να δείτε κάτι σαν το στιγμιότυπο στην αρχή του άρθρου, χωρίς το wallpaper (αυτό το κατεβάζετε από εδώ) :)

ΠΡΟΑΙΡΕΤΙΚΑ

# δημιουργούμε έναν startup script για να μπορούμε να το
# ελέγχουμε με εντολή του τύπου service vncserver start/stop

sudo nano /etc/init.d/vncserver

# προσθέτουμε στο αρχείο αυτό τα εξής:

#!/bin/sh -e
### BEGIN INIT INFO
# Provides:          vncserver
# Required-Start:    networking
# Required-Stop:     networking
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/stop vncserver
### END INIT INFO

PATH="$PATH:/usr/X11R6/bin/"

export USER="dimitris" #αντικαταστήστε με το σωστό όνομα
DISPLAY="1"
DEPTH="16"
GEOMETRY="800x600"
#GEOMETRY="1024x768"
#GEOMETRY="1280x1024"
NAME="my-vnc-server"

OPTIONS="-name ${NAME} -depth ${DEPTH} -geometry ${GEOMETRY} -localhost :${DISPLAY}"

. /lib/lsb/init-functions

case "$1" in
start)
log_action_begin_msg "Starting vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver ${OPTIONS}"
;;

stop)
log_action_begin_msg "Stoping vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}"
;;

restart)
$0 stop
$0 start
;;
esac

exit 0

# αποθηκευουμε και αλλάζουμε δικαιώματα εκτέλεσης:

sudo chmod 755 /etc/init.d/vncserver
sudo update-rc.d vncserver defaults