Controllare un desktop Linux da Windows o Linux con VNC
Attenzione
Questo articolo è stato pubblicato più di un anno fa, potrebbero esserci stati sviluppi.
Ti preghiamo di tenerne conto.
Nel post di oggi vediamo come accedere ad un desktop GNU/Linux (che chiameremo “server”) da un pc GNU/Linux o Windows (che chiameremo “client”) con VNC. Per l’articolo di oggi prendo spunto da un interessante post in lingua inglese.
Accedere ad un desktop GNU/Linux da un qualsiasi altro sistema, ubicato in un qualsiasi luogo (LAN, internet) usando VNC è relativamente semplice. Il risultato può essere ottenuto indipendentemente dal sistema operativo utilizzato (GNU/Linux, Windows o Mac OS X). Una delle caratteristiche più interessanti è che tale procedura può essere implementata in modo libero con un piccolo dispendio di tempo e senza essere esperti.
Ci sono tre componenti indispensabili per stabilire una connessione con VNC ad un “desktop environment” (come KDE o Gnome) su Linux:
- il pacchetto VNC Server installato sulla macchina server,
- il pacchetto VNC Viewer installato sui client che visualizzeranno il computer remoto,
- una connessione secure shell (ssh) in entrambe le macchine.
Ottenere i pacchetti “VNC Server” e “VNC Viewer”
Ci sono svariati modi di ottenere VNC, alcuni “free“, altri meno “free“. Per prima cosa controlliamo che VNC non sia già installato sulla macchina Linux server. Le più recenti release di alcune distro Linux (come Fedora, o RedHat) includono già VNC.
[user@localhost ~] rpm -qa|grep vnc
Se VNC è già installato il comando restituirà alcuni pacchetti, in caso contrario non ci sarà output.
Nel caso in cui VNC non fosse ancora installato, consiglio l’utilizzo di un pacchetto modificato di VNC, chiamato “TightVNC“. Può essere scaricato dal sito ufficiale.
Una volta installato VNC dovremo specificare una password per proteggere l’accesso al computer da estranei. Per impostare la password digitiamo il comando:
[user@localhost ~] vncpasswd
ed inseriamo una password sufficientemente valida (suggerisco di almeno 8 caratteri, con minuscole, maiuscole, numeri e simboli). Ricordiamoci che la scelta della password è un passo parecchio importante. Se la password venisse decifrata l'”ospite” avrebbe l’intero accesso a tutte le funzioni della macchina.
Avviare ed arrestare il VNC Server
Per l’avvio di VNC Server è sufficiente digitare questo comando:
[user@localhost ~] vncserver
Se non ci sono stati problemi, il messaggio di output sarà simile a questo:
New 'myhost:1 (src)' desktop is myhost:1
Creating default startup script /home/neil/.vnc/xstartup Starting applications specified in /home/neil/.vnc/xstartup Log file is /home/neil/.vnc/myhost:1.log
Le informazioni qui riportate dimostrano che vncserver è avviato sul display “:1“, del sistema “myhost“. Ha poi creato una sottodirectory nascosta chiamata “.vnc” nella home dell’utente che lo ha invocato. Tale directory contiene lo scrip di startup chiamato “xstartup“. Oltre a ciò ha anche creato un file di log.
Per arrestare VNC Server è sufficiente digitare il seguente comando:
[user@localhost ~] vncserver -kill :1
Ovviamente la dicitura “:1” si riferirà al display che vogliamo terminare. L’output sarà simile a questo:
Killing Xvnc process ID 15609
Configurare il “Desktop Environment” (KDE, Gnome, ecc.) per essere lanciato da VNC
Il prossimo passo sarà configurare “cosa” fare avviare quando il VNC Server si avvia. Come specificato qualche riga fa, quando vncserver si avvia per la prima volta viene creata una directory “.vnc” all’interno della home di chi lo lancia. Ora modifichiamo il file “xstartup” contenuto nella directory “.vnc” con un editor (gedit, nano, vim, ecc.). Per semplicità, visto che questa guida non si indirizza esplicitamente ai professionisti, useremo gedit.
[user@localhost ~] gedit /home/<user>/.vnc/xstartup
Il file dovrebbe presentarsi più o meno così:
#!/bin/sh # Uncomment the following two lines for normal desktop: # unset SESSION_MANAGER # exec /etc/X11/xinit/xinitrc [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey vncconfig -iconic & xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & twm &
In breve questo script lancia automaticamente il window manager “twm” (ultima riga), un window manager molto leggero e qualitativamente buono. Un’altra ottima scelta è Motif Window Manager (mwm).
Altra opzione invece, è lanciare i desktop environment KDE o Gnome. Si può fare direttamente da questo script modificando l’ultima riga “twm &
” con “gnome-session &
“:
Allo stesso modo si può avviare KDE con “startkde &
“.
Installare il VNC Viewer (client)
Su Linux (e sui sistemi Unix) il viewer di VNC è chiamato con scarso sforzo di fantasia “vncviewer”. Se non è già installato sul nostro sistema, consiglio ancora l’utilizzo di “TightVNC“.
Stabilire una connessione “Secure Shell” (ssh) fra i due sistemi
Per ragioni di sicurezza si raccomanda sempre l’utilizzo di VNC attraverso una connessione criptata. Con Linux l’ssh è molto semplice, con Windows è necessario usare un programma esterno (ad esempio PuTTY).
Di default VNC Server comunica sulla porta 59xx, dove “xx” rappresentano il numero del display (“01” nel caso di prima). Ad esempio se vncserver annuncia di essere avviato sul display “:1” la porta sarà la 5901.
Supponiamo di avere VNC avviato sul display “:1” su un sistema chiamato “myhost“, e vogliamo stabilire una connessione ssh. Il comando da digitare sarà il seguente:
Linux:
[user@localhost ~] ssh -L 5901:localhost:5901 myhost
Con Windows attraverso PuTTY:
- avviare PuTTY, inserire l’IP o il nome dell’host della macchina alla quale ci connetteremo (nel nostro esempio “myhost“),
- selezionare il tab “SSH“,
- selezionare l’opzione “Tunnels” nella “Category list” ed inserire le seguenti informazioni:
- Source port: 5901
- Destination: myhost:5901
- salvare il profilo inserito selezionando “Session” dalla “Category list“, inserendo il nome nel campo di testo “Saved Sessions” e premere “Save“,
- premere il pulsante “Open” per stabilire la connessione ssh.
In entrambi i casi Linux e Windows richiederanno l’inserimento di una password impostata sul server.
Avviare il VNC Client
Se tutto è andato come doveva con l’installazione di VNC Server ed abbiamo stabilito la connessione ssh usando la porta appropriata, è ora possibile lanciare il VNC Viewer. In Linux il comando da lanciare è il seguente:
[user@localhost ~] vncviewer localhost:1
In Windows , usando TightVNC è sufficiente lanciare il viewer ed inserire “localhost:1” nella finestra di dialogo.
In entrambi i casi verrà richiesta una password, quella impostata sul server. Dopo una piccola attesa una finestra contenente il desktop Linux dovrebbe apparire. Si potrà ora interagire con quella finestra proprio come se stessimo di fronte alla console.

6 commenti
Q. · 19 Ottobre 2018 alle 11:22 AM
Salve, lei e’ il primo per il quale ho disabilitato adblock.
(che mania quella di chiedere indirizzo mail e sito web, uff!)
TheJoe · 19 Ottobre 2018 alle 12:15 PM
E gliene sono grato. In realtà inserire il sito web non è indispensabile e la mail serve solo a ricevere le notifiche quando qualcuno risponde al suo commento, come in questo caso… Ma visto che la mail che ha inserito è del tutto fittizia non riceverà mai alcunché.
Mi auguro di rivederla presto su queste pagine.
Piriponzolo · 26 Maggio 2017 alle 9:56 PM
Salve! E come accedere, al contrario, ad un desktop Windows XP (che chiameremo “server”) da un pc GNU/Linux (che chiameremo “client”) con VNC?
TheJoe · 30 Maggio 2017 alle 6:38 PM
Il procedimento è molto simile. Una volta che installi vnc server su windows effettui la chiamata dal client linux e procedi come spiegato nell’articolo.
Roman · 28 Novembre 2014 alle 11:33 AM
Finalmente una guida che cercavo, mi è stata davvero utile, grazie!
Giovanni Mauri · 7 Dicembre 2014 alle 6:31 PM
E’ un piacere essere d’aiuto. Ciao!