Cookie

Controllare un desktop Linux da Windows o Linux con VNC

Pubblicato da TheJoe il

Tempo di lettura stimato: 4 minuti

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:

  1. il pacchetto VNC Server installato sulla macchina server,
  2. il pacchetto VNC Viewer installato sui client che visualizzeranno il computer remoto,
  3. 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 “cosafare 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).

Guarda qui:  Mandare il comando di spegnimento tramite pulsante di accensione

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:

  1. avviare PuTTY, inserire l’IP o il nome dell’host della macchina alla quale ci connetteremo (nel nostro esempio “myhost“),
  2. selezionare il tab “SSH“,
  3. selezionare l’opzione “Tunnels” nella “Category list” ed inserire le seguenti informazioni:
    • Source port: 5901
    • Destination: myhost:5901
  4. salvare il profilo inserito selezionando “Session” dalla “Category list“, inserendo il nome nel campo di testo “Saved Sessions” e premere “Save“,
  5. 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.


TheJoe

Mantengo questo blog a livello amatoriale dal 2009. Sono appassionato di grafica, tecnologia, software Open Source. Fra i miei articoli non sarà difficile trovarne circa la musica, ed alcuni di riflessioni personali, ma preferisco indirizzare la linea del blog principalmente verso la tecnologia. Per informazioni contattami.

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!

Lascia un commento

Segnaposto per l'avatar

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.