SDB:Usare VNC

Icon-cleanup.png Questo articolo ha bisogno della tua attenzione perché ancora non segue i principi guida del nostro wiki.
Se vuoi contribuire, per favore familiarizza con questi prima. Se hai domande, non esitare a contattarci, ti aiuteremo più che volentieri! :-)


Provato su openSUSE Articoli consigliati Articoli correlati
Icon-checked.png

Icon-manual.png
Icon-help.png

Informazioni generiche

VNC ti mette a disposizione sul client una finestra in cui è in esecuzione una sessione remota sul server, il che in pratica equivale ad essere seduti direttamente di fronte al "Server" e ad usare monitor, tastiera e mouse di quest'ultimo.

VNC permette di usare una scheda grafica, mouse e tastiera, tutti "virtuali" sul server. In questa modalità si possono avviare tante "Sessioni virtuali" quante sono le risorse che il "Server" può gestire. Questo permette a più persone di lavorare sul "Server" simultaneamente (usando i loro mouse, tastiere e schermi), in maniera simile al componente "Terminal Server" di Windows.

VNC è anche in grado di copiare il contenuto fisicamente mostrato dalla scheda grafica, dando accesso allo schermo reale sul "Server" (Desktop remoto), creando una sessione condivisa sia dagli utenti locali che da quelli remoti ("Remote Desktop Sharing"), usata ad esempio per fornire supporto remoto.

Da quanto detto risulta che VNC è molto flessibile, dispone perciò di numerose opzioni, ciascuna adatta a differenti esigenze.


Pregi e difetti

  • Facile da usare servendosi direttamente del browser come client
  • Disponibile (spesso preinstallato) sulla gran parte delle distribuzioni Linux
  • Multi piattaforma (client/server su Microsoft Windows, Mac OS)
  • Piuttosto lento (rispetto ad altre soluzioni come FreeNX)
  • Non sicuro (se usato da solo)
  • Non è sempre facile da adattare alla risoluzione dei vari monitor nei client
  • Gestione di server e client non sempre immediata (ma le varie distribuzioni Linux e i DE offrono vari strumenti di gestione, lato client e server)

Installazione

È facilmente ottenibile installando il pacchetto "tightvnc", comunque di solito già installato su openSUSE per impostazione predefinita. Inoltre dovrebbero essere già presenti in openSUSE gli strumenti che lo rendono direttamente configurabile da YaST, sia come client che come server.


Guida di openSUSE alle sessioni VNC

Icon-warning.png
Attenzione! Sessione (con relative sottosezioni) tratta e tradotta dalla Guida di openSUSE, non disponibile attualmente in italiano.

openSUSE supporta due tipi diversi di sessione VNC: una sessione temporanea che dura finché la connessione VNC è mantenuta attiva dal client, e una sessione persistente che dura finché non viene esplicitamente terminata.

Nota: Una macchina può offrire simultaneamente sessioni di entrambi i tipi su porte diverse, ma non è possibile convertire una sessione aperta da un tipo ad un altro.

Sessioni VNC temporanee

Le sessioni VNC temporanee vengono iniziate dal client remoto. Il client lancia una schermata di login grafico sul server. In questo modo si può scegliere l'utente che avvia la sessione e, se il gestore delle sessioni lo supporta, l'ambiente desktop. Quando il client terminerà la connessione ad una tale sessione VNC, anche tutte le applicazioni avviate all'interno di essa verranno terminate. Le sessioni VNC temporanee non si possono condividere, ma è possibile avere più sessioni aperte contemporaneamente su uno stesso host.

Abilitare le sessioni VNC temporanee

  1. Avvia YaST+Servizi di rete+Amministrazione Remota (VNC).
  2. Spunta Permetti amministrazione remota.
  3. Se necessario seleziona anche Apri porta nel firewall (per esempio, se la tua interfaccia di rete è stata assegnata alla Zona esterna del firewall). Se avessi più interfacce di rete installate, limita l'apertura delle porte del firewall all'interfaccia interessata mediante Dettagli firewall....
  4. Conferma le impostazioni scelte.
  5. Nel caso non tutti i pacchetti necessari fossero già disponibili ti verrà chiesto di accettare l'installazione dei pacchetti mancanti.
Nota: La configurazione predefinita di openSUSE rende disponibili sessioni con una risoluzione di 1024x768 pixel ad una profondità di colore uguale a 16 bit. Le sessioni sono disponibili sulle porte 5901 per i "regolari" viewer VNC (equivale al display :1 di VNC) e sulla porta 5801 per i browser web.

Si possono rendere disponibili altre configurazioni, usando porte diverse.

Nel caso delle sessioni temporanee I numeri del display VNC sono indipendenti dai numeri del display X. Un numero di display VNC viene assegnato manualmente ad ogni configurazione che il server può supportare (:1 nell'esempio di sopra). Ogni volta che viene iniziata una sessione VNC con una di quelle configurazioni, alla sessione viene assegnato un numero di display X libero.

Iniziare una sessione VNC temporanea

Per dare inizio ad una sessione VNC temporanea, è necessario disporre di un viewer VNC installato sulla macchina client. Il viewer standard sui prodotti SUSE è vncviewer, fornito dal pacchetto tightvnc. A seconda dell'ambiente desktop installato, in openSUSE sarà probabilmente disponibile fin da subito un client VNC grafico, facile da usare, come KRDC per KDE e vinagre per GNOME. Puoi anche visualizzare una sessione VNC con l'ausilio di un browser e di un applet Java.

Per avviare VNC viewer e dare inizio ad una sessione con le impostazioni predefinite del server, usa un comando simile a:

$ vncviewer jupiter.example.com:1

Al posto del numero del display VNC puoi anche specificare il numero di porta con due doppi punti:

$ vncviewer jupiter.example.com::5901

In alternativa per visualizzare la sessione VNC puoi usare un browser dotato di supporto per Java, inserendo il seguente indirizzo: http://jupiter.example.com:5801

Configurare le sessioni VNC temporanee

Puoi saltare questa sezione, se non hai bisogno di modificare la configurazione predefinita.

Le sessioni VNC temporanee sono avviate per mezzo del demone xinetd. Un file di configurazione è disponibile al percorso /etc/xinetd.d/vnc. Inizialmente mette a disposizione sei blocchi di configurazione: tre per i viewer VNC (da vnc1 a vnc3), e tre per le applet Java (da vnchttpd1 a vnchttpd3). Per impostazione predefinita sono attivi soltanto vnc1 e vnchttpd1.

Per attivare una configurazione, commenta la riga disable = yes con un carattere # nella prima colonna, o elimina direttamente tutta la riga. Per disattivare una configurazione decommenta o aggiungi la riga corrispondente.

Il server Xvnc si può configurare usando l'opzione server_args; vedi Xnvc --help per un elenco di opzioni.

Quando aggiungi configurazioni personalizzate, assicurati che queste non stiano utilizzando porte che sono giù in uso sullo stesso host da altre configurazioni, altri servizi, o da sessioni VNC persistenti già presenti.

Rendi infine attive le modifiche applicate alla configurazione digitando il seguente comando:

# rcxinetd reload
Nota: Quando si abilita Amministrazione remota come descritto in #Abilitare le sessioni VNC temporanee, vengono aperte le porte 5801 e 5901 nel firewall. Se l'interfaccia di rete che mette a disposizione le sessioni VNC è protetta da un firewall, quando andrai ad attivare porte aggiuntive per le sessioni VNC, avrai bisogno di aprire manualmente le rispettive porte, trovi le istruzioni in SuSEfirewall2.

Sessioni VNC persistenti

Le sessioni VNC persistenti vengono iniziate sul server. La sessione e tutte le applicazioni avviate in questa sezione restano in esecuzione indipendentemente dalle connessioni del client, fino al momento in cui la sessione viene terminata.

Ad una sessione persistente possono accedere più client contemporaneamente. Questo è ideale per finalità illustrative, laddove un solo client ha accesso completo e tutti gli altri client possono accedere solo per osservare ciò che avviene. Un'altra situazione di utilizzo sono le sessioni per finalità didattico-formative in cui l'istruttore potrebbe dover accedere al desktop di un allievo. Comunque, probabilmente nella maggior parte dei casi non avrai bisogno di condividere la tua sessione VNC.

Contrariamente alle sessioni temporanee che lanciano un gestore delle sessioni desktop (display manager), le sessioni persistenti avviano un desktop già operativo che viene eseguito con le credenziali d'accesso dell'utente che ha avviato la sessione VNC.

È possibile proteggere l'accesso alle sessioni persistenti con due tipi di password:

  • una normale password che permette l'accesso completo

oppure

  • una password opzionale per la sola osservazione (view-only) che permette un accesso non interattivo (cioè in sola visione).

Ad una sessione possono essere associate più connessioni client di entrambi i tipi contemporaneamente.

Avviare una sessione VNC persistente

  1. Apri una shell e assicurati di aver eseguito l'accesso con le credenziali dell'utente che dovrà essere il proprietario della sessione VNC.
  2. Se l'interfaccia di rete che mette a disposizione le sessioni VNC è protetta da un firewall, è necessario aprire manualmente nel firewall la porta usata dalla tua sessione. In alternativa, se si avviano più sessioni, puoi aprire un intervallo di porte. Vedi SuSEfirewall2 per i dettagli su come configurare il firewall. vncserver usa le porte 5901 per il display :1, 5902 per il display :2, e così via. Con sessioni persistenti, di solito il display di VNC e il display di X hanno lo stesso numero.
  3. Per avviare una sessione con una risoluzione di 1024x769 pixel e una profondità di colore uguale a 16 bit, immetti il seguente comando:
    $ vncserver -geometry 1024x768 -depth 16
    Il comando vncserver sceglie un numero di display non utilizzato quando non ne viene specificato uno nella riga di comando, e stampa a video il numero scelto. Per ulteriori opzioni vedi man 1 vncserver.

La prima volta che si esegue vncviewer il programma richiederà di inserire la password per avere accesso completo alla sessione. Se necessario, è possibile anche fornire una password per accedere alla sessione in modalità solo osservazione (view-only).

La password (o le password) che vengono inserite in quel momento verranno anche usate per le future sessioni avviate dallo stesso utente. È possibile cambiare queste password usando il comando vncpasswd.

Nota: Assicurati di usare password robuste e di lunghezza sufficiente (otto o più caratteri). Ricordati di non condividere queste password. Le connessioni che usano VNC non sono crittografate, per cui qualcuno che osservi il traffico di rete tra le due macchine sarebbe in grado di leggere la password quando viene trasferita nelle prime fasi della sessione.

Per terminare la sessione chiudi l'ambiente desktop (DE) in esecuzione all'interno della sessione VNC dal viewer di VNC (vncviewer, KRDC, etc.) come faresti per terminare una normale sessione grafica di X in locale.

Se preferisci terminare la sessione manualmente, apri una shell sul server con VNC in esecuzione e assicurati di aver fatto il login con le credenziali dell'utente che risulta il proprietario della sessione VNC che vuoi terminare. Dopo di ché, per terminare ad esempio una sessione una sessione in esecuzione sul display :1, lancia il comando: vncserver -kill :1

Connettersi ad una sessione VNC persistente

Per connettersi ad una sessione VNC persistente, è necessario disporre di un viewer VNC installato. Il viewer standard sui prodotti SUSE Linux è vncviewer, fornito dal pacchetto tightvnc. A seconda dell'ambiente desktop installato, in openSUSE sarà probabilmente disponibile fin da subito un client VNC grafico, facile da usare, come KRDC per KDE e vinagre per GNOME. Puoi anche visualizzare una sessione VNC con l'ausilio di un browser e di un applet Java.

Per avviare VNC viewer e connetterti al display :1 del server VNC, usa un comando simile a:

$ vncviewer jupiter.example.com:1

Al posto del numero del display VNC puoi anche specificare il numero di porta con due doppi punti:

$ vncviewer jupiter.example.com::5901

In alternativa per visualizzare la sessione VNC puoi usare un browser dotato di supporto per Java, inserendo il seguente indirizzo: http://jupiter.example.com:5801

Configurare le sessioni VNC persistenti

Le sessioni VNC persistenti si possono configurare modificando il file $HOME/.vnc/xstartup. Per default questo script per la shell script avvia xterm e il Gestore finestre twm. Per avviare al suo posto GNOME, oppure KDE, sostituisci la riga che inizia con twm con una tra le seguenti:

/usr/bin/gnome     # GNOME
/usr/bin/startkde  # KDE4
Nota: le sessioni VNC persistenti usano una configurazione diversa per ciascun utente, ma per ogni utente preso singolarmente c'è una sola configurazione. Quindi sessioni multiple avviate da uno stesso utente useranno tutte gli stessi file di avvio e della password.

Configurare la connessione di rete

Si rammentano qui alcuni aspetti da tenere presenti per configurare l'interfaccia di rete in presenza di VNC (ci potrebbero essere ripetizioni di quanto detto sopra, ma sono un riferimento per il resto dell'articolo).

  • Per consentire ai client VNC di connettersi ricorda di aprire le porte 5901 e seguenti nel firewall. (1 porta per ogni sessione X)
  • Per lo connessioni HTTP con Java, ricordati di aprire le porte 5801 e successive nel firewall. (1 porta per ogni sessione X)
  • Per default le connessioni VNC inizieranno con la porta 5900 (5800 per connessioni HTTP) e poi sommeranno il numero del display relativo alla sessione X che è stata avviata - se la sessione X è stata avviata come display :1 allora la porta da usare per connettersi a questa sessione Xserver con VNC sarà la 5901 (o 5801), allo stesso modo la porta sarà la 5902 (5802) per una sessione X avviata come display :2.

Condividere una sessione utente "fisica"

In questo caso VNC viene usato per condividere il Desktop dell'utente corrente copiando il contenuto della scheda grafica "fisica" per dare accesso allo schermo reale dal "Server" (il Desktop remoto). Dato che hai accesso al contenuto realmente mostrato dallo schermo, la sessione è condivisa tra l'utente remoto e quello locale che possono vedere quello che l'altro sta facendo. È questa la regione per cui questi metodi sono usati per fornire supporto remoto, e chiamati "Condivisione del desktop remoto" (o "Remote Desktop Sharing").

Usare la funzionalità di condivisione desktop integrata in KDE

Per utilizzare questa funzionalità con KDE devi avere il pacchetto krfb (o "kdenetwork3-vnc" se usi il vecchio KDE3) installato (di solito è preinstallato in openSUSE). Il programma può essere avviato da riga di comando con "krfb", oppure è disponibile come voce "Condivisione del desktop - Krfb" nel lanciatore delle applicazioni, sotto Applicazioni -> Sistema -> Accesso remoto.

Questa applicazione, una volta avviata, consentirà alla tua sessione X locale di diventare una sessione X condivisa a cui altri possono unirsi. Krfb applicherà automaticamente le modifiche necessarie e creerà un invito con la richiesta ad un utente remoto di partecipare alla tua sessione, questo invito può poi essere inviato con una email oppure facendo conoscere agli invitati, mediante un qualche altro mezzo idoneo: indirizzo IP, numero dello schermo (display) e la password che è stata assegna. Ricorda che, se la connessione remota proviene da una rete esterna, l'indirizzo IP riportato da krfb non sarà corretto e l'utente remoto dovrà sostituirlo con l'indirizzo IP esterno del tuo router. È inoltre probabile che sarò necessario reindirizzare all'interno del tuo router le porte richieste per la sessione di VNC, in modo tale che il router potrà connettersi al PC voluto. Quando l'utente remoto cercherà di connettersi al desktop condiviso, al mittente dell'invito comparirà una finestra di notifica in cui potrà accettare (o rifiutare) la connessione e nel contempo scegliere se concedere all'utente remoto accesso completo oppure soltanto come osservatore (sola visione).

Creare manualmente una sessione di X condivisa

Nota: Gli utenti di GNOME possono usare le applicazioni vino (server VNC) e vinagre (client VNC).

Se non usi KDE come ambiente desktop o semplicemente vuoi avere il pieno controllo del processo di condivisione, allora lo puoi fare manualmente. Per esempio si può ricorrere all'applicazione "x11vnc". Questo programma è incluso nel repository Oss standard di openSUSE ma molto probabilmente dovrà essere installato per poterlo usare. Lo puoi fare facilmente da YAST > Gestione pacchetti, cercando e poi installando il pacchetto "x11vnc".

Una volta installato, puoi avviare il programma da riga di comando e avere pieno controllo sulla modalità con cui la sessione di X viene condivisa. Sono disponibili numerose opzioni, se sei interessato il modo migliore per conoscerle è consultare la pagina di manuale per x11vnc. Se la tua priorità è avere una condivisione funzionante senza addentrarti nei dettagli, allora potrai servirti del comando qui sotto, che usa opzioni "standard" ed è ideale per iniziare:

$ x11vnc -usepw -ncache -display :0

In esso infatti l'applicazione x11vnc viene avviata con le opzioni tali che: usi una password per la connessione (opzione "-usepw"), attivi la cache per accelerare le operazioni (opzione "-ncache") e infine richieda al server VNC di usare la prima sessione (parametro "-display :0"). Sarebbe anche possibile avviare l'applicazione specificando soltanto il display, ma è assai più conveniente usare almeno anche una password. Sperimentando con i diversi metodi di compressione, o eliminando alcune parti del traffico di rete, potrebbe però permetterti di ottenere una risposta assai più veloce sulla macchina remota, ma a discapito della semplicità del comando usato.

Nota che alla sessione X iniziale, avviata al login, è associato in maniera predefinita il display 0. Ulteriori sessioni verranno automaticamente avviate come display 1 , 2, e così via. È possibile creare una password usando il comando "x11vnc -storepasswd password_da_usare /percorso/al/file_della_password", o soltanto "x11vnc -storepasswd" se desideri usare la password da una precedente installazione di VNC.

Potrai infine provare questa configurazione usando un viewer VNC (es.: vncviewer da shell o KRDC con KDE) per connetterti in remoto da un altro computer della rete interna. Se questo non fosse possibile potresti comunque usare il tuo stesso PC per connetterti "da remoto", ovvero tramite VNC, al tuo stesso desktop. Ma questo solo come ultima risorsa, dato che è possibile che provochi un comportamento strano da parte del tuo ambiente desktop.


Stabilire una sessione VNC sicura usando ssh

Se i servizi x11vnc ed ssh sono entrambi disponibili sulla macchina remota, e vorresti stabilire una sessione VNC sicura per controllare da remoto un desktop attivo in modalità reale, prova allora a seguire i due passaggi seguenti.

  • In una console digita il seguente comando, inserendo nome utente e password dell'utente connesso alla sessione:
    ssh -t -L 5900:localhost:5900 NomeUtenteConnesso@nomecomputer.dominio 'x11vnc -localhost -nolookup -nopw -display :0'
    Con questo comando viene stabilita una connessione sicura crittografata dal tuo computer alla macchina remota. L'opzione -t consente di mettere in esecuzione un programma di tipo schermo che necessita di un terminale di controllo, l'opzione -L collega invece la porta del tuo VNC locale (5900) alla porta di VNC sulla macchine remote. A questo punto viene fatto il log con il tuo NomeUtente sulla macchina remota (ovviamente ti verrà chiesto di inserire la password). Una volta connesso, il comando qui sopra lancerà il server x11vnc sulla macchina remota. I parametri forniti al server x11vnc consentono all'host locale di stabilire una connessione (-localhost), permettono di limitare il controllo del nome host e dell'indirizzo IP (-nolookup), disabilitano gli avvisi se non si fornisce una password (-nopw) e consentono di connettersi al display 0
  • Successivamente, avvia da una console separata, sulla tua macchina, una finestra di vncviewer mediante il seguente comando:
    vncviewer -encodings "tight copyrect hextile" localhost:0
    Questo comando connetterà il client VNC alla porta 5900, che hai associato alla porta 5900 dell'host remoto, e passerà i parametri di codifica che desideri (-encodings "tight copyrect hextile") al server x11vnc remoto e visualizzerà il contenuto dello schermo del desktop remoto sul tuo schermo locale.

Il risultato di questa procedura è effettivamente equivalente a usare gli strumenti di KDE Krfb e Krdc e ti fornisce una sessione VNC con un desktop fisico (utile per amministrazione remota, fornire assistenza, etc.). Inoltre tutto ciò è ottenuto passando per una connessione protetta e senza richiedere alcun intervento da parte dell'utente che si trova all'altro estremo!

NOTA: la versione per Microsoft Windows di VNC server supporta solo la modalità condivisa della sessione desktop, dato che quel sistema operativo non supporta gli schermi virtuali.

Vedi anche

Articoli correlati

Collegamenti esterni