Usare un desktop remoto con Xfree

Usare un desktop remoto con Xfree

Questo breve tutorial è indirizzato agli utenti alle prime armi, che magari si trovano a smanettare con server remoti (O anche con un pc della LAN casalinga come nel mio caso) ma che ancora non hanno ben imparato ad usare la console e vorrebbero poter usare una interfaccia grafica anche da remoto.

Ebbene questo è possibile se si sfrutta l'architettura del server XFree (e anche di X.org anche se non ho provato), per dare un'idea di come esso funzioni a livello teorico bisogna sapere che X è un server, ed è molto diverso dal semplice windows, nel nostro caso quello che ci interessa è che come tutti i server X può accettare delle connessioni che però non necessariamente provengono soltanto dalla macchina locale, ma potrebbero provenire anche da una macchina remota. I programmi che noi lanciamo si collegano come dei veri e propri client remoti al nostro server X che gira in locale e appaiono sul nostro schermo, io invece voglio fare in modo che le applicazioni di una macchina remota ridirigano l'output sul mio X locale, vediamo come:

La rete se cosi vogliamo chiamarla su cui ho effettuato le mie prove era composta da due pc

1 Portatile P4 2800 Mhz 512mb RAM nome: therion ip: 192.168.0.2 OS: Slackware GNU/Linux 9.1
2 Serverino K6 200 Mhz 32mb RAM nome: darkstar ip: 192.168.0.1 OS: Slackware GNU/Linux 9.1

Quello che voglio fare io è ridirigere le applicazioni che girano su therion sul server X di darkstar in modo da avere anche un buon aumento di prestazioni (infatti le applicazioni gireranno molto più velocemente su therion che su darkstar)

Prima di tutto bisogna precisare che la rete deve essere piuttosto veloce per poter permettere lo scambio di dati visto che il protocollo di trasmissione di X è piuttosto pesante, nel mio caso ho usato una normale rete 10/100 ma non so come potrebbe funzionare su un modem ppp o dsl senza una qualche compressione, cmq per adesso non è questo l'argomento che ci interessa.

Per prima cosa bisogna dire a therion che le sue applicazioni devo collegarsi al server X di darkstar, questo può essere fatto tramite una variabile d'ambiente chiamata DISPLAY che identifica il display su cui redirigere l'output per fare ciò alla console di therion scriviamo:

export DISPLAY=darkstar:0.0

È bene precisare che se le applicazioni non trovano il display specificato redirigono l'output sull'X locale

IL comando mi sembra piuttosto chiaro, darkstar è il nome dell'host su cui si deve ridirigere l'output (se si mette l'ip invece dell'host ovviamente funziona ugualmente) e 0.0 sono il server X da prendere in considerazione su quella macchina e lo schermo collegato, nel mio caso il primo e unico :) Cmq nella maggior parte dei casi 0.0 andrà benone, o anche uno 0 soltanto visto che solitamente non ci sono più di un monitor ed un schermo per macchina.

Il secondo passo è quello di autorizzare darkstar a ricevere immagini da therion, questo può essere fatto in diversi modi, il più semplice è sicuramente usare il programma xhost, la sintassi è piuttosto semplice dalla shell di darkstar digitiamo:

xhost +therion // Per abilitare la ricezione da therion

Se poi non vorrete più autorizzare therion al collegamento potrete digitare

xhost -therion // Per impedire la ricezione da therion

Volendo si può anche fare in modo che tutti possano collegarsi tramite

xhost +

ma ve lo sconsiglio quindi è meglio riabilitare il check con

host -

xhost però è un programma piuttosto semplice e che offre funzioni limitate e un livello di adattabilità minimo, l'altro programma che ho usato e che si è rivelato migliore (come d'altronde avevo già letto in rete) è xauth (Tra le altre cose le mie slack non avevano le man pages di nessuna delle due applicazioni, cmq le opzioni di xauth si possono vedere dando xauth --help quelle di xhost dobbiamo immaginarcele :D) tramite questa applicazione infatti ogni utente può avere i propri permessi che vengono registrati nel file ~/.Xauthority e dunque possono essere copiati da macchina a macchina semplicemente copiando quel file, nel nostro caso darkstar accetterà le immagini provenienti da therion solo se i loro ~/.Xauthority (dei due rispettivi utenti che agiscono sulle due macchine) sono uguali.

A questo punto rimane solo da provare se il tutto funziona ritorno sulla shell di therion e digito:

xfm &

e con molta soddisfazione vedo che xfm appare sul desktop di darkstar e non su quello di therion :) dunque il lavoro è riuscito e ora posso amministrare il computer remoto come si vi fossi davanti.

Usare il forwarding di ssh per avere più sicurezza

Per aumentare la sicurezza della trasmissione dati e per evitare attacchi mitm è opportuno abilitare il forwardind di X su ssh, per fare ciò ci sono almeno due modi (o almeno sono due quelli che conosco io :D) il primo consiste nell'usare l'opzione -X quando si avvia ssh per collegarsi alla macchina remota su cui vogliamo eseguire le operazioni e il secondo consiste nel modificare il file di configurazione di ssh che nel mio caso è /etc/ssh/ssh_config e aggiungervi

Host remote.host.name
ForwardX11 yes

In modo da abilitare il forwarding su ssh per l'host selezionato

Appendice:

Nonostante questo tutorial sia stato scritto per i più inesperti visto che chi è da un pò che usa linux conosce bene queste cose, è d'obbligo precisare che questi stratagemmi possono creare buchi di sicurezza notevoli, è sempre bene usare una autenticazione tramite xauth, offrire l'accesso alla porta del server X solo ai server fidati e in linea di massima è sempre meglio utilizzare ssh per amministrare macchine remote in modo da avere a disposizione una maggiore sicurezza data dalla crittografia dei dati trasmessi ed evitare il più possibile attacchi del tipo mitm.

Oltre a ciò ho letto che molte applicazioni che utilizzano una accelerazione 3d non funzionano da remoto, questo però non dovrebbe essere un grosso problema visto che non credo che nessuno abbia interesse a giocare ad UT2003 o a Tuxracer da remoto :)

Per domande errori baggianate e tutto ciò che volete scrivetemi a AdHe5(at)kuht.it

Lo spunto per questo tutorial l'ho preso da http://www.xs4all.nl/~zweije/xauth.html.
ovvero il Remote-X-Apps-mini-howto

________________

""