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

dimitris | Πέμ, 10/09/2014 - 14:41 | 7'

Είναι πολλές φορές που θες να συνδεθείς στον 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 dimitris@remote_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

 

 

Δώσε αστέρια!

MO: 5 (ψήφοι: 1)