VNC é un acronimo per Virtual Network
Computing.
E` un sistema client/server che mette a disposizione di un utente un desktop.
Questo desktop può essere acceduto da altri computer in rete
e può anche essere condiviso.
Con VNC puoi lavorare su un computer senza esserci per forza
seduto davanti.

Un esempio d’uso

Vuoi scaricare dalla rete parecchi dati, magari stai scaricando le ISO della tua distribuzione Linux preferita. Questa operazione durerà diverse ore. Per scaricare i dati stai usando, diciamo, Firefox. Hai un portatile ed é in rete con altri computer. Puoi usare i computer della rete per fare il download.

Ti connetti su un computer della rete (usando magari ssh) e lanci il server di VNC vncserver. Questo farà partire un desktop su quella macchina. Dopodiché fai partire il visualizzatore di VNC vncviewer sul tuo portatile, specificando il server VNC a cui ti vuoi connettere (in questo caso quello che hai appena fatto partire). A questo punto sei connesso al desktop remoto e potrai lanciare Firefox e tutte le applicazioni che vorrai. Potrai chiudere il vncviewer ed andartene. La prossima volta che ti riconnetterai col vncviewer a quel server VNC ritroverai il desktop come l’avevi lasciato l’ultima volta ammesso che il server VNC non sia stato terminato nel frattempo :-).

VNC in XFCE

Esempio di sessione GNOME con un vncviewer che mostra un desktop XFCE in cui si vede il browser Firefox  – beh, detta così sembra le scatole cinesi 🙂

Come fare nel dettaglio

Inizializzazione del server VNC

Supponiamo che l’utente che utilizzi per tutto l’esperimento sia dan e che il computer su cui farai partire il server si chiami mela. Il desktop che farai partire con vncserver apparterrà quindi all’utente dan.
Ecco l’esempio della sessione: dan@uva > ssh dan@mela dan@mela password: dan@mela > vncserver You will require a password to access your desktops. Password: ***** Verify: ***** New 'mela:1 (dan)' desktop is mela:1 Creating default startup script /home/dan/.vnc/xstartup Starting applications specified in /home/dan/.vnc/xstartup Log file is /home/dan/.vnc/mela:1.log Analizziamo cosa é successo:
  • Ti sei connesso su mela con ssh.
  • Hai lanciato vncserver, il quale ti ha chiesto una password. Questa password ti verrà chiesta ogni volta che ti connetterai al server.
  • vncserver ti ha detto che mela:1 sarà il desktop (o display) a cui potrai contattarlo col client.
  • vncserver ha creato, essendo la prima volta che lo lanci, una directory /home/dan/.vnc e dentro ci ha messo alcuni file di utilità:
    • mela:1.log: il log del server. Se per qualche motivo non dovesse partire il server, in questo file é scritto il perché.
      Questo file viene ricreato ad ogni lancio del server.
    • mela:1.pid: con l’ID del processo del server.
      Questo file viene ricreato ad ogni lancio del server.
    • passwd: con la password (cifrata) che hai fornito.
    • xstartup: lo script di inizializzazione con cui viene lanciato il server VNC.
      Il server VNC é a tutti gli effetti un server X, ed é in grado di far partire qualsiasi ambiente grafico desideri.
      Di default parte con uno scarno twm. Se sostituisci l’ultima linea del file e ci metti startxfce4 invece di twm (non togliere il carattere & mi raccomando!) avrai qualcosa di più evoluto.
A questo punto puoi passare ad usare il client.

Uso del client VNC

A questo punto su mela sta girando un ncserver. Fai partire il client vnc. Se vuoi lanciarlo a linea di comando é molto semplice, il comando si chiama: vncviewer Ti chiederà il VNC server (nel caso dell’esempio mela:1) e Password, quella che hai fornito la prima volta che hai fatto partire il server.

Chiusura di una sessione di lavoro

Se vuoi sospendere la sessione, per poi riprenderla successivamente, ripartendo da dove eri arrivato l’ultima volta a lavorare sul desktop, é sufficiente che tu chiuda l’applicazione vncviewer.

Se vuoi terminare definitivamente la sessione, terminando anche il server VNC, devi usare il comando vncserver con l’opzione -kill sulla macchina su cui hai fatto partire il server VNC. Quindi:

dan@uva > ssh dan@mela
dan@mela's password:
dan@mela > vncserver -kill :1
Killing Xvnc process ID 4838

NOTA: se usi il bottone di Logout del desktop remoto il server VNC finirà in uno stato indeterminato e dovrai uccidere il server con vncserver -kill :1.

Uso avanzato del server VNC

Cambiare la password del server VNC

Per cambiare la password del server devi connetterti sulla macchina su cui gira il server e lanciare il comando vncpasswd: dan@uva > ssh dan@mela
dan@mela's password:
dan@mela > vncpasswd
Password:
Verify:
NOTA: Questo comando non chiede la vecchia password, si fida del fatto che sei l’utente dan (sei stato autenticato dal sistema al login).

Server VNC multipli

Se vuoi puoi far partire diversi server sulla stessa macchina, magari con utenti diversi. VNC é in grado di gestire questa situazione assegnando ad ogni server un display diverso: mela:1 mela:2 e così via…

Puoi anche decidere di far partire un server sul display che decidi tu, per esempio il 20: dan@uva > ssh dan@mela
dan@mela's password:
dan@mela > vncserver :20

Dimensione del desktop per il Server VNC

Se hai un monitor piccolo, quando usi il vncviewer può essere antipatico avere un server con un desktop troppo grosso: continueresti ad usare le barre di scorrimento per accedere a tutta l’area visibile. In questo caso puoi far partire il server con le dimensioni del desktop che preferisci, nell’esempio 800×600: dan@uva > ssh dan@mela
dan@mela's password:
dan@mela > vncserver -geometry 800x600
In questo caso vedrai che la finestra del vncviewer sarà ridotta rispetto al default.

Condivisione del desktop per il Server VNC

Questa funzionalità é sicuramente una tra le più impressionanti, consente a più utenti simultaneamente di accedere allo stesso desktop. Quello che fai tu da un client lo vedono tutti dagli altri client. Questo tipo di modalità é particolarmente utile per mostrare applicativi al lavoro a più persone contemporaneamente. Tutte le persone sui client possono fare tutto e il primo che muove il mouse prende "il controllo".
Ci vuole armonia 🙂
Ecco come lanciare il server: dan@uva > ssh dan@mela
dan@mela's password:
dan@mela > vncserver -alwaysshared
NOTA: Uno scenario tipico per questa modalità é quello in cui alcuni client accedono al server attraverso internet. Bisogna considerare i seguenti problemi di sicurezza:
  • la password con la quale ci si connette al server VNC viaggia in chiaro
  • il protocollo usato da VNC per la comunicazione client/server non è cifrato ma in chiaro.
Queste problematiche di sicurezza possono essere risolte usando ssh.