OpenSSH: X11 forwarding: differenze tra le versioni

aggiunto Xephyr
(aggiunta configurazione lato server e requisiti)
(aggiunto Xephyr)
Riga 12: Riga 12:
== Lato server ==
== Lato server ==
Requisiti:
Requisiti:
* installare e in esecuzione il server [[SSH]]';
* installare e in esecuzione il server [[SSH]];
* autorizzare gli accessi (con chiave per utente/host o password) come per la connessione normale (senza ''X11 forwarding'');
* autorizzare gli accessi (con chiave per utente/host o password) come per la connessione normale (senza ''X11 forwarding'');
* abilitare <code>X11Forwarding</code> (vedere la sezione successiva), di default disabilitata.
* abilitare <code>X11Forwarding</code> (vedere la sezione successiva), di default disabilitato.


Non è necessario che sia in esecuzione o anche solo installato un server grafico X sul server.
Si ricorda che non è necessario che sia in esecuzione o anche solo installato un server grafico X sul server.


=== Abilitare X11Forwarding ===
=== Abilitare X11Forwarding ===
Riga 63: Riga 63:
Dalla macchina client, è sufficiente lanciare <code>ssh</code> con l'opzione <code>-X</code>:
Dalla macchina client, è sufficiente lanciare <code>ssh</code> con l'opzione <code>-X</code>:
<pre>
<pre>
$ ssh -X username_remoto@host_remoto
$ ssh -X utente_remoto@host_remoto
username_remoto@host_remoto:~$      (<-- sessione SSH)
utente_remoto@host_remoto:~$      (<-- sessione SSH)
</pre>
</pre>
per avviare una nuova sessione della [[shell]] testuale predefinita.
per avviare una nuova sessione della [[shell]] testuale predefinita.
Riga 72: Riga 72:
Per esempio:
Per esempio:
<pre>
<pre>
username_remoto@host_remoto:~$ evince
utente_remoto@host_remoto:~$ evince
</pre>
</pre>
lancia il programma <code>evince</code> sulla macchina remota, visualizzandolo sul server X locale in esecuzione. Se si apre un documento, si noterà infatti che si sta esplorando il [[File System|file system]] dell'utente remoto sulla macchina remota.
lancia il programma <code>evince</code> sulla macchina remota (dove deve essere installato), visualizzandolo sul server X locale in esecuzione (dove può anche non essere installato). Se si apre un documento, si noterà che si sta esplorando il [[File System|file system]] dell'utente remoto sulla macchina remota.


Quando si ha terminato, è sufficiente chiudere la connessione, chiudendo il terminale oppure con <code>exit</code>:
Quando si ha terminato è sufficiente chiudere la sessione, scrivendo il comando <code>exit</code> oppure premendo <code>Ctrl-d</code>:
<pre>
<pre>
username_remoto@host_remoto:~$ exit  (<-- sessione SSH)
utente_remoto@host_remoto:~$ exit  (<-- sessione SSH)
$                                   (<-- shell locale)
$                                 (<-- shell locale)
</pre>
</pre>


==== Compressione del traffico ====
In alternativa è possibile specificare direttamente il comando da eseguire. Per esempio per <code>evince</code>:
Un'opzione utile è <code>-C</code>, per abilitare la compressione del traffico, e in particolare quello reindirizzato al server X locale, il che può velocizzare i tempi di risposta delle applicazioni remote:
<pre>
<pre>
$ ssh -X -C username_remoto@host_remoto
$ ssh -X utente_remoto@host_remoto -- evince
</pre>
</pre>
In tal caso la sessione SSH sarà terminata quando si chiuderà l'applicazione.
==== Compressione ====
Un'opzione utile è <code>-C</code>, che permette la compressione del traffico di rete, in particolare quello reindirizzato al server X locale, il che può velocizzare i tempi di risposta delle applicazioni remote:
<pre>
$ ssh -X -C utente_remoto@host_remoto
</pre>
==== Avvio di un'intera sessione grafica ====
In questo esempio si considera ''blackbox'', che è un ambiente grafico minimale e quindi molto veloce, che si occupa soltanto della gestione delle finestre, dei menù accessibili con il mouse e di un pannello con gli spazi di lavoro. Dev'essere installato sulla macchina remota:
<pre>
# apt-get install blackbox menu
</pre>
Sulla macchina locale, deve essere invece installato un server grafico annidato che faccia da proxy per l'''X11 forwarding'', come per esempio <code>Xephyr</code>, che è un'evoluzione più veloce e raccomandata di <code>Xnest</code>:
<pre>
# apt-get install xserver-xephyr
</pre>
Sulla macchina locale, preparo quindi il server grafico proxy, lanciandolo in background:
<pre>
$ Xephyr :1 -ac -nolisten tcp -screen 1024x768 &
</pre>
dove:
* ''':1''' è un display libero (per esempio se <code>$DISPLAY</code> è ''':0''' e non ci sono altri server X in esecuzione; altrimenti usarne un altro);
* '''-ac''' significa di disabilitare l'access control (per le sole applicazioni all'interno di Xephyr; purtroppo non è possibile utilizzare entrambi gli ''access control'', non disponendo la versione compilata di Xephyr di un metodo per generare un cookie sicuro con <code>xauth generate</code>);
* '''-nolisten tcp''' disabilita il protocollo TCP, permettendo soltanto connessioni locali (o redirette, come quelle via [[SSH]]);
* '''-screen''' ''XRES'''''x'''''YRES'' determina la risoluzione della finestra, che di default (e per ragioni di sicurezza) non potrà essere ridimensionata;
* '''&''' al termine del comando, serve per lanciarlo in backgorund (è un'istruzione della [[bash|shell]], non di <code>Xephyr</code>).
Poi lancio <code>blackbox</code> sul display (''':1''' o comunque quello usato con <code>Xephyr</code>) del server proxy. Sempre dalla macchina locale:
<pre>
$ DISPLAY=:1 ssh utente_remoto@host_remoto -X -C -- blackbox
</pre>
Nella finestra aperta da <code>Xephyr</code> si vedrà l'ambiente grafico di <code>blackbox</code>, da cui sarà possibile aprire tutte le applicazioni installate sulla macchina remota, senza bisogno di lanciarle singolarmente da terminale.


==== Senza access control ====
==== Senza access control ====
Riga 95: Riga 130:
Per disattivare il controllo di accesso, effettuando una connessione fidata (''trusted X11 forwarding''), si deve utilizzare l'opzione <code>-Y</code>:
Per disattivare il controllo di accesso, effettuando una connessione fidata (''trusted X11 forwarding''), si deve utilizzare l'opzione <code>-Y</code>:
<pre>
<pre>
$ ssh -Y username_remoto@host_remoto
$ ssh -Y utente_remoto@host_remoto
username_remoto@host_remoto:~$        (<-- sessione SSH)
utente_remoto@host_remoto:~$        (<-- sessione SSH)
</pre>
</pre>


Riga 103: Riga 138:


{{Autori
{{Autori
|Autore = [[Utente:HAL 9000|HAL 9000]] 11:25, 28 nov 2015 (CET)
|Autore = [[Utente:HAL 9000|HAL 9000]] 17:55, 28 nov 2015 (CET)
|Estesa_da =
|Estesa_da =
|Verificata_da =
|Verificata_da =
3 581

contributi