La maggior parte delle distribuzioni Linux attualmente disponibili, soprattutto quelle destinate ad un uso per i sistemi desktop, si basa sul server grafico X11 per la visualizzazione delle applicazioni. Unendo alle funzionalità di X11 le potenzialità del protocollo SSH, è possibile eseguire la logica di business delle applicazioni grafiche su un server, e visualizzarne l'interfaccia su una macchina completamente distinta dalla prima. Questo scenario è reso possibile dal cosiddetto X11 Forwarding, che in genere può essere realizzato per interagire graficamente con applicazioni eseguite su una macchina Linux remota.
In questo articolo non ci limiteremo solo a mostrare come effettuare un X11 Forwarding tradizionale (tra due macchine Linux), ma sfrutteremo due strumenti, PuTTY ed Xming, per abilitare questo meccanismo al fine di operare graficamente su applicazioni Linux direttamente dal desktop di Windows.
Per i nostri scopi, utilizzeremo una macchina Linux (su cui abbiamo installato Ubuntu 14.04) ed un PC con Windows 7. Le versioni di entrambi i sistemi operativi non sono significative, e la procedura che segue può facilmente essere generalizzata ai rilasci più o meno recenti.
SSH: installazione su Linux
Per cominciare, su Ubuntu installiamo un server SSH, per la precisione OpenSSH. Possiamo farlo con apt, utilizzando la sintassi che segue:
sudo apt-get install openssh-server
Al termine dell'installazione, assicuriamoci che il server SSH sia avviato, eseguendo il comando seguente:
sudo service ssh start
Un esempio di X11 Forwarding
Avendo installato un server SSH, siamo già in grado, da un'altra macchina Linux (per esempio un'installazione di Debian), di eseguire un'applicazione grafica che gira sul nostro PC con Ubuntu. Per farlo, assicuriamoci di avere installato un client SSH sulla macchina Debian:
# apt-get install openssh-client
A questo punto, non resta che eseguire il nostro comando remoto via SSH. Immaginiamo, ad esempio, di volere eseguire l'editor di testo gedit su Ubuntu, interagendo con esso dalla macchina Debian. Per farlo sarà sufficiente un singolo comando:
ssh -Y vito@192.168.1.111 'gedit'
Il flag -Y
è quello che abilita l'X11 Forwarding via SSH; senza di esso, non sarebbe possibile visualizzare l'interfaccia dell'applicazione grafica che vogliamo eseguire. L'ultimo parametro, 'gedit'
, è una stringa contenente il comando da eseguire. Infine, vito
è il nome utente, e 192.168.1.111
è l'indirizzo IP della macchina a cui vogliamo connetterci (quella su cui abbiamo installato Ubuntu, per intenderci).
Come si vede, effettuare l'X11 Forwarding tra due macchine Linux (che utilizzano entrambe un server grafico X11) è abbastanza semplice. Se invece vogliamo interagire graficamente da un sistema Windows con un software che gira su Linux (sempre utilizzando SSH), abbiamo bisogno di qualche accorgimento aggiuntivo.
Xming e PuTTY
Per potere visualizzare un'applicazione grafica X11 su Windows, abbiamo bisogno di installare un apposito server grafico anche sul sistema operativo di Microsoft. Tale server grafico è rappresentato da Xming, nato esattamente per essere utilizzato sui sistemi Windows. Per i nostri scopi avremo bisogno di scaricare, da questo link, i due pacchetti Xming ed Xming-fonts, da installare in questo ordine.
Per potere accedere via SSH alla nostra macchina Linux direttamente da Windows, possiamo fare ricorso a PuTTY, che offre una comoda interfaccia grafica pensata proprio per questo scopo. Una volta installato, saremo pronti ad effettuare l'X11 Forwarding anche su Windows.
A questo punto, la prima cosa da fare è avviare Xming, cui possiamo accedere tramite Start -> Tutti i programmi -> Xming -> Xming. Se tale operazione non produce alcun effetto, clicchiamo col tasto destro del mouse sull'icona di Xming, selezioniamo Proprietà e, nella scheda Compatibilità, scegliamo di eseguire il programma in modalità compatibile con Windows XP (Service Pack 3). Fatto ciò, apriamo PuTTY ed inseriamo l'hostname della macchina Linux, come mostrato nella figura seguente:
Prima di procedere, dobbiamo però abilitare l'opzione per l'X11 Forwarding (corrispondente al flag -Y
del comando ssh
descritto in precedenza). Per farlo, selezioniamo l'opzione Enable X11 Forwarding in Connection -> SSH -> X11, come mostrato di seguito.
A questo punto, non resta che cliccare sul tasto Open ed avviare la nostra sessione SSH. Se proveremo ad eseguire un'applicazione grafica (per esempio l'editor di testo gedit), vedremo che esso verrà visualizzato sul desktop di Windows, da cui potremo interagire senza difficoltà con la nostra applicazione.
La figura seguente mostra proprio l'interfaccia di gedit sul desktop di Windows 7.
Conclusioni su X11 Forwarding
Abbiamo visto come sia possibile eseguire un'applicazione grafica su una macchina diversa da quella utilizzata per la visualizzazione dell'interfaccia. Questo metodo può rivelarsi molto utile in diverse occasioni, soprattutto per eseguire applicazioni computazionalmente onerose, gestendole anche da dispositivi poco potenti (si pensi ad un tablet con Windows, per esempio). Un'ottimo modo, insomma, per gestire graficamente un server, magari durante un viaggio in treno o in pullman, con una connessione ad internet appena decente.