VNC con «nlnxrc»

NLNX prevede un utilizzo semplificato di VNC (sezione 28.13), attraverso l'uso dello script nlnxrc. Il sistema ha lo scopo di facilitare sia la realizzazione di lezioni in video-conferenza, sia un accesso remoto personale.

Per quanto riguarda la gestione della videoconferenza, il meccanismo proposto dallo script nlnxrc è molto semplice e non prevede sistemi di sicurezza ferrei, per impedire che qualcuno si intrometta nella comunicazione.

Tabella u44.9. Script nlnxrc: controllo di VNC.

Comando Descrizione
nlnxrc vncs
Si avvia preferibilmente da una console per attivare un servente VNC, definendo una parola d'ordine.
nlnxrc vncsc
Attiva un servente VNC, definendo una parola d'ordine, assieme al cliente VNC necessario a interagire con questo.
nlnxrc vncss
Si avvia preferibilmente da una console per attivare un servente VNC condivisibile, definendo una parola d'ordine.
nlnxrc vncssc
Attiva un servente VNC condivisibile, definendo una parola d'ordine, assieme al cliente VNC necessario a interagire con questo.
nlnxrc vncv nodo
nlnxrc vncv-ssh nodo
Consente di visualizzare il servente VNC in funzione presso il nodo indicato. La seconda delle due forme di utilizzo, implica la creazione di un tunnel SSH per garantire un collegamento cifrato.
nlnxrc vncc nodo
nlnxrc vncc-ssh nodo
Consente di interagire con il servente VNC in funzione presso il nodo indicato. La seconda delle due forme di utilizzo, implica la creazione di un tunnel SSH per garantire un collegamento cifrato.
nlnxrc sharedx
Attiva un servente VNC condivisibile, utilizzando una parola d'ordine predefinita, assieme al cliente VNC necessario a interagire con questo.
nlnxrc viewremotex nodo
Consente di visualizzare il servente VNC in funzione presso il nodo indicato, utilizzando la parola d'ordine predefinita. In pratica si usa per collegarsi a un servente VNC avviato con il comando nlnxrc sharedx.

Organizzazione e funzionamento

Le sigle dei vari comandi di nlnxrc hanno lo scopo di sintetizzare il senso degli stessi, come descritto nella tabella successiva.

Tabella u59.1. Sigle mnemoniche utilizzate.

Nome Descrizione
vncs
VNC server
vncsc
VNC server with client
vncss
VNC shared server
vncssc
VNC shared server with client
vncc
VNC client
vncv
VNC viewer

VNC richiede di definire una parola d'ordine per autorizzare il collegamento tra servente e cliente. Con lo script nlnxrc, questa parola d'ordine viene annotata nel file ~/.vnc/passwd e può essere riutilizzata; eventualmente, alcuni comandi fanno uso di una parola d'ordine predefinita, all'interno di vncrc stesso.

Tutto il meccanismo previsto da nlnxrc è organizzato in modo tale da far funzionare il servente VNC sulla stazione grafica :1, pertanto questa informazione non viene mai impartita, ma di conseguenza, in un certo elaboratore, è possibile avviare un solo servente VNC per volta.

I comandi che avviano un servente VNC richiedono di specificare espressamente la geometria dello schermo:

.-----------------geometry-------------------.
| Select geometry:                           |
| .---^(-)---------------------------------. |
| |   1160x928   5:4                       | |
| |   1184x888   4:3                       | |
| |   1320x792   5:3                       | |
| |   1120x896   5:4                       | |
| |   1152x864   4:3                       | |
| |   1280x768   5:3                       | |
| |   1120x840   4:3                       | |
| |   1080x864   5:4                       | |
| |   1240x744   5:3                       | |
| |   1088x816   4:3                       | |
| |   1040x832   5:4                       | |
| |   1200x720   5:3                       | |
| |   1056x792   4:3                       | |
| |   1160x696   5:3                       | |
| |   1000x800   5:4                       | |
| |   1024x768   4:3 usual resolution      | |
| |   1120x672   5:3                       | |
| `---v(+)---------------------------------' |
|--------------------------------------------|
|           <  OK  >      <Cancel>           |
`--------------------------------------------'

Naturalmente, se si vuole accedere al servente VNC attraverso una finestra, conviene utilizzare una geometria leggermente inferiore a quella dello schermo che si ha effettivamente a disposizione. Per esempio, se si utilizza il sistema grafico a una risoluzione di 1024×768, può essere conveniente avviare il servente VNC a 960×720.

Utilizzo di un elaboratore remoto con un pubblico passivo

Si ipotizza la situazione in cui, per qualche ragione, si vuole utilizzare X presso un elaboratore remoto, offrendo ad altri la possibilità di visualizzare ciò che succede. Per fare questo occorre avviare presso l'elaboratore remoto il comando nlnxrc vncs, mentre localmente si può utilizzare il comando nlnxrc vncc per poterlo controllare e nlnxrc vncv per la sola visualizzazione.

Figura u59.3. Utilizzo di un servente X presso un elaboratore remoto, con un pubblico passivo.

vncs, vncc e vncv

All'avvio del servente grafico viene richiesto di inserire una parola d'ordine, o di riutilizzare quella che si trova nel file ~/.vnc/passwd. La parola d'ordine è l'unico mezzo reale per controllare l'accesso al servente grafico e deve essere fornita anche a chi visualizza o partecipa al controllo.

Il meccanismo proposto, vale in quanto ci si attende un comportamento corretto da parte del pubblico. Infatti, se invece di nlnxrc vncv si utilizza il comando nlnxrc vncc, si ruba la sessione di controllo del servente grafico a chi invece ha il compito di svolgere la relazione.

Utilizzo di un elaboratore locale con un pubblico passivo

In questo caso si vuole riprodurre una situazione equivalente a quella della sezione precedente, dove però il servente grafico si trova presso lo stesso elaboratore locale del relatore. In tal caso, l'avvio del servente grafico si ottiene con il comando nlnxrc vncsc, offrendo agli altri la possibilità di visualizzare con il comando nlnxrc vncv. Per il resto valgono le considerazioni già fatte nella sezione precedente.

Figura u59.4. Utilizzo di un servente X presso l'elaboratore locale, con un pubblico passivo.

vncsc, vncc e vncv

Come già annotato nella sezione precedente, il meccanismo proposto, vale in quanto ci si attende un comportamento corretto da parte del pubblico. Infatti, se invece di nlnxrc vncv si utilizza il comando nlnxrc vncc, si ruba la sessione di controllo del servente grafico a chi invece ha il compito di svolgere la relazione.

Utilizzo di un elaboratore remoto con un pubblico attivo

Si ipotizza la situazione in cui, per qualche ragione, si vuole utilizzare X presso un elaboratore remoto, offrendo a tutti la possibilità di interagirvi. Per fare questo occorre avviare presso l'elaboratore remoto il comando nlnxrc vncss, mentre localmente si utilizzare il comando nlnxrc vncc.

Figura u59.5. Utilizzo di un servente X presso un elaboratore remoto con un pubblico attivo.

vncss, vncc

Rispetto alla descrizione delle sezioni precedenti, cambia il fatto che ogni utente partecipa al controllo del servente remoto.

Utilizzo di un elaboratore locale, con un pubblico attivo

In questo caso si vuole riprodurre una situazione equivalente a quella della sezione precedente, dove però il servente grafico che si vuole condividere, si trova presso lo stesso elaboratore che partecipa al suo controllo. L'avvio del servente grafico si ottiene con il comando nlnxrc vncssc, mentre il controllo partecipativo del pubblico avviene sempre con il comando nlnxrc vncc.

Figura u59.6. Utilizzo di un servente X presso l'elaboratore locale.

vncssc, vncc

Utilizzo senza parola d'ordine

Come già accennato, c'è la possibilità di usare VNC utilizzando una parola d'ordine predefinita, che così può semplificare il lavoro, almeno in una rete locale che dia garanzie sufficienti di isolamento. Per questo è possibile avviare un servente grafico locale, attraverso i comandi nlnxrc sharedx e lasciare che il pubblico veda con il comando nlnxrc viewremotex.

Figura u59.7. Un relatore mostra qualcosa al pubblico.

sharedx, viewremotex

Utilizzo di VNC attraverso un tunnel SSH

I comandi nlnxrc vncv e nlnxrc vncc, hanno delle alternative, costituite rispettivamente da: nlnxrc vncv-ssh e nlnxrc vncc-ssh. Nel secondo caso, il collegamento verso l'elaboratore remoto avviene tramite un tunnel cifrato SSH (Secure Shell).

Si osservi che dal lato del servente VNC non si deve fare nulla di diverso e si utilizzano i comandi già descritti: nlnxrc vncs, nlnxrc vncsc, nlnxrc vncss o nlnxrc vncssc.

Figura u59.8. Accesso a un servente X presso un elaboratore remoto, utilizzando un tunnel SSH.

tunnel cifrato

Il comportamento dei comandi vncv-ssh e vncc-ssh, è lo stesso di quelli a cui si abbinano (senza l'estensione -ssh), con la differenza che per la creazione del tunnel serve l'indicazione del nominativo utente per conto del quale deve essere realizzato, con la richiesta eventuale di una parola d'ordine):

.----SSH tunnel for VNC------.
| Please enter the user name |
| to access the remote VNC   |
| server at                  |
| 172.21.254.254:1.          |
| .------------------------. |
| |tizio                   | |
| `------------------------' |
|----------------------------|
|   <  OK  >  <Cancel>       |
`----------------------------'
.-------SSH tunnel---------.
| You are going to enter   |
| the password to access   |
| 172.21.254.254 with SSH. |
`--------------------------'

Password:

Evidentemente, se il tunnel non può essere instaurato, non può avvenire la connessione.

Al termine del collegamento, il tunnel viene eliminato; tuttavia, quando si tenta di avviare un altro collegamento, se esiste già un tunnel dello stesso tipo richiesto, si può tentare di riutilizzarlo:

.--------------------------------SSH tunnel----------------------------------.
| There is already a tunnel with port 5901:                                  |
|                                                                            |
| 19056 ?    Ss   0:00 ssh -N -f -L 5901:localhost:5901 tizio@172.21.254.254 |
|                                                                            |
| What should I do?                                                          |
| .------------------------------------------------------------------------. |
| |                  reuse    try to reuse the old tunnel                  | |
| |                  kill     try to kill the SSH process                  | |
| |                  abandon  don't do anything                            | |
| `------------------------------------------------------------------------' |
|----------------------------------------------------------------------------|
|                       <  OK  >            <Cancel>                         |
`----------------------------------------------------------------------------'

«a2» 2013.11.11 --- Copyright © Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net