Manovrare X da remoto: differenze tra le versioni

configurazione lato server e utilizzo lato client (lanciando X direttamente)
(configurazione lato server e utilizzo lato client (lanciando X direttamente))
Riga 11: Riga 11:
Se è possibile, si raccomanda caldamente invece di configurare una connessione [[SSH]] e di abilitare l'[[OpenSSH: X11 forwarding|X11 forwarding]] per avviare un'applicazione grafica o anche un'intera sessione.}}
Se è possibile, si raccomanda caldamente invece di configurare una connessione [[SSH]] e di abilitare l'[[OpenSSH: X11 forwarding|X11 forwarding]] per avviare un'applicazione grafica o anche un'intera sessione.}}


== Installazione ==
== Lato server ==
Con [[privilegi di amministrazione]] è necessario installare <code>xdm</code>, se ancora non presente. Per esempio con [[apt-get]] basta:
=== Installazione ===
Con [[privilegi di amministrazione]] è necessario installare <code>xdm</code>, oltre ovviamente al server [[Xorg]], se ancora non presente nella macchina che farà da server. Per esempio con [[apt-get]] basta:
<pre>
<pre>
# apt-get install xdm
# apt-get install xdm xorg
</pre>
</pre>


== Configurazione di xdm ==
=== Configurazione di xdm ===
Con [[privilegi di amministrazione]] è sufficiente modificare i file di configurazione indicati in questa sezione con un editor di testo, per esempio [[nano]]:
Sempre con [[privilegi di amministrazione]], è sufficiente modificare i file di configurazione indicati in questa sezione con un editor di testo, per esempio [[nano]]:
<pre>
<pre>
# nano /etc/X11/xdm/xdm-config
# nano /etc/X11/xdm/xdm-config
Riga 42: Riga 43:
*        #any host can get a login window
*        #any host can get a login window
</pre>
</pre>
Questo metterà l'Xserver in broadcast mode che butterà giù una lista di tutti gli Xserver in Willing di accetare di connettersi all'X server.


Se poi vuoi permettere connesioni solo da parte di certi host che un sezione nello stesso file che si chiama CHOOSER
Al posto di <code>*</code> è possibile anche specificare, uno a uno, gli [[host]] da cui si intende accettare la connessione, anche con uso di pattern. Per esempio basta scrivere (al posto di <code>*</code>):
 
In <code>/etc/X11/fs/config</code> commenta così:
<pre>
<pre>
#no-listen = tcp
192.168.0.*
</pre>
</pre>
Poi cambia in /etc/X11/XF86Config-4
per accettare connessioni dagli host appartenenti alla rete <code>192.168.0.0/24</code>, ossia tutti gli indirizzi compresi da <code>192.168.0.1</code> a <code>192.168.0.254</code>. Sono permessi anche [[hostname]], per esempio se definiti in <code>/etc/hosts</code>, e l'uso di indirizzi multicast a cui limitare l'ascolto. Per maggiori informazioni si consultino gli esempi scritti nel file.
 
Per finire è necessario specificare di restare in ascolto sulla porta TCP, modificando il file <code>/etc/X11/xdm/Xservers</code>:
<pre>
<pre>
FontPath        "unix/:-1"
:0 local /usr/bin/X :0 vt8 -nolisten tcp
FontPath        "unix/:-7100"
</pre>
</pre>
Questo per indicare 7100 come porta per FontPath in UDP.
che diventerà:
 
== Utilizzo ==
Se usi un sistema GNU/Linux probabilmente hai X già installato. L'X server può essere lanciarlo con un semplice:
<pre>
<pre>
# X &
:0 local /usr/bin/X :0 vt8
</pre>
</pre>
Questo farà partire un server X in background. Comparirà uno schermo con lo sfondo grigio e un X come puntatore del mouse che puoi muovere per lo schermo... niente di speciale nè di carino da vedere .... inutile.  
dove:
* '''<code>:0</code>''' è l'identificativo del server X che sarà avviato e dev'essere libero; se ce n'è già uno in esecuzione, utilizzarne un altro (<code>:1</code>, <code>:2</code>, ecc...);
* '''vt8''' è il terminale virtuale da utilizzare, in questo caso <code>tty8</code> (accessibile con <code>Ctrl-Alt-F8</code>). Sceglierne uno qualsiasi libero (<code>vt9</code>, <code>vt10</code>, ecc...).


Il comando di sopra quindi inizia un X server, che semplicemente sta lì in attesa di un client che si collega come per esempio ''xterm'' che apre una finestra ed esegue una shell. Ci sono molte opzioni da riga di comando che aprono finestre di diversa grandezza e posizione ma tutto ciò non sarebbe molto pratico nè di facile utilizzo.
È possibile anche specificare più linee, se si intendono avviare più server X simultaneamente. In tal caso è consigliabile lasciare l'opzione '''<code>-nolisten tcp</code>''' su quelli per cui non è previsto l'accesso remoto, come misura di sicurezza.


Cbisogno di un ''X-client'' e di un ''window-manager''.  
{{Warningbox | Si ricorda nuovamente che, anche se l'accesso deve essere autenticato, la comunicazione non è criptata. Per cui chiunque nella rete potrebbe ascoltare le credenziali di accesso e il suo uso è '''altamente sconsigliato''' al di fuori della LAN, e anche in questo caso esclusivamente se tutti gli host e gli utenti connessi alla LAN possono sempre essere considerati fidati.}}


Un window manager puo dare quell'usabilità interattiva alla quale siamo abituati. Un window manager in GNU/Linux potrebbe essere mwm o fvwm che possono essere lanciati con un
Per rendere effettive le modifiche, è necessario riavviare il display manager:
<pre>
<pre>
mwm -display :0 
# service xdm restart
</pre>
</pre>
o
e questo conclude la configurazione lato server. <code>xdm</code> resterà in ascolto sulla porta 177 del protocollo UDP per ricevere richieste di autenticazione, secondo il protocollo XDMCP, dagli host specificati nel file <code>Xaccess</code>. Il server <code>Xorg</code> resta invece in ascolto sulla porta 6000 del protocollo TCP e successive, in base al display utilizzato, e permetterà l'accesso soltanto previa autenticazione, di default in base alla conoscenza di una sequenza casuale generata in precedenza: il ''magic cookie'' (per maggiori informazioni si rimanda alla lettura del manuale di <code>xauth</code>), comunicato da <code>xdm</code> per permettere l'autenticazione.
 
== Lato client ==
=== Installazione ===
È necessario il solo pacchetto <code>xorg</code>, per cui se non fosse installato, con [[privilegi di amministrazione]]:
<pre>
<pre>
fvwm -display :0
# apt-get install xorg
</pre>
</pre>
una volta che è partito un window-manager muovere e gestire finestre diventa interattivo e lanciare applicazioni diventa più facile. Il <code>-display :0</code> per aprire finestre sull X-server. Un display non è nient'altro che uno schermo al quale collegarsi. Di default quando X parte lui inizia un display sul 'canalè :0 della macchina locale.
Quando parte una sessione X automaticamente va a piazzare il display al quale è collegata nella variabile $DISPLAY. Se non dovesse essere stata dichiarata alcuna variabile di default X si andra a piazzare sul display <code>:0.0</code>.
In ogni caso per lanciare X dalla console è un sufficiente lanciare uno ''startx'', che inizierà un X-server su display <code>:0</code>.
Molti X-server specialmente nel mondo GNU/Linux usano ''xdm'' o ''gdm'' o ''kdm''. Xdm stà per "X Display Manager"; questi hanno lo scopo di accogliere l'utente con un X-client che è un login grafico chiamato anche "greeter". Una volta che hai introdotto nome utente e password non solo un window manager ma un intero ambiente desktop si presenta dinanzi ai tuoi occhi.
Ritornado al discorso client server , sul server lancia startx,assicurati ci sia un window manager attivo e poi da un xterm lancia il comando:


=== Utilizzo ===
Se l'indirizzo IP del server è <code>192.168.0.2</code>, dal client sarà sufficiente il comando:
<pre>
<pre>
$ xhost add 192.168.0.2 (ip del client)
# X -query 192.168.0.2 :0 vt8
</pre>
</pre>
per connettersi a <code>xdm</code> sulla macchina server. Si noti che il display e il terminale virtuale non devono combaciare per forza con quelli scelti sul server, l'unica cosa importante è che siano entrambi liberi sul client, in maniera analoga a quanto visto in precedenza per il server.


Questo permetterà connessioni dalla macchina 192.168.0.2.
In alternativa, se si è nella stessa rete locale del server, è anche possibile:
Sul client invece digita :
<pre>
<pre>
$ xterm -display 192.168.0.1(ip Xserver):0
# X -broadcast :0 vt8
</pre>
</pre>
Sul server X adesso dovresti vedere un finestra di xterm. &Egrave; successo che un X-client si è collegato ad un xserver aprendo una finestra di xterm lì.
per mandare il messaggio di richiesta in ''broadcast'' (ossia a tutti gli [[host]] della rete), per effettuare la connessione al server X del primo ''host'' che risponde.
 
 
== Altro ==
TODO: da sistemare (per ora commentato)


Riguardo la sicurezza il protocollo X è apllicabile solo in ambienti fidati Lan e non è cosigliabile avere sessioni X attraverso la grande rete. Se vuoi utilizzare X attraverso la rete è consigliabile incanalare il protocollo X in un protocollo sicuro come ssh. In ogni caso ci sono anche altri modi in aggiunta ad ssh che puoi utilizzare per proteggere le tue macchine uno di questi è xhost ma anche meglio con un programma xauth utilizzato per autenticare i clients: ''Xauth'' può funzionare in vari modi: uno di essi è attraverso l'utilizzo di un cookie. Un X-client per collegarsi ad un X-server ha bisogno di conoscere una sequenza di dati casuali generati dal server conosciuto come cookie che funziona in maniera molto simile ad un session password: se il cookie trasmesso dal client non corrisponde a quello del server, Xserver rifiuterà la connessione. Xserver di default è in ascolto sulla porta  
<!--
Riguardo la sicurezza il protocollo X è applicabile solo in ambienti fidati Lan e non è cosigliabile avere sessioni X attraverso la grande rete. Se vuoi utilizzare X attraverso la rete è consigliabile incanalare il protocollo X in un protocollo sicuro come ssh. In ogni caso ci sono anche altri modi in aggiunta ad ssh che puoi utilizzare per proteggere le tue macchine uno di questi è xhost ma anche meglio con un programma xauth utilizzato per autenticare i clients: ''Xauth'' può funzionare in vari modi: uno di essi è attraverso l'utilizzo di un cookie. Un X-client per collegarsi ad un X-server ha bisogno di conoscere una sequenza di dati casuali generati dal server conosciuto come cookie che funziona in maniera molto simile ad un session password: se il cookie trasmesso dal client non corrisponde a quello del server, Xserver rifiuterà la connessione. Xserver di default è in ascolto sulla porta  


* 6000 per il display :0
* 6000 per il display :0
Riga 133: Riga 133:
Altri ottimi progetti sono il [http://www.ltsp.org Linux terminal Server project] che usa tutte le potenzialità di X in scenari dove gli utenti sono collegati ad un X server centrale attraverso dei thin client o diskless machine con un grosso abbatimento sui costi e in questo senso come non menzionare il progetto [http://www.progettolazzaro.it/ProgettoLazzaro.htm LazarusNX] che ha come obbiettivo il recupero di hardware obsoleto specialmente nelle scuole italiane,creazione di reti didattiche e laboratori informatici ad alte prestazioni e costi contenuti.
Altri ottimi progetti sono il [http://www.ltsp.org Linux terminal Server project] che usa tutte le potenzialità di X in scenari dove gli utenti sono collegati ad un X server centrale attraverso dei thin client o diskless machine con un grosso abbatimento sui costi e in questo senso come non menzionare il progetto [http://www.progettolazzaro.it/ProgettoLazzaro.htm LazarusNX] che ha come obbiettivo il recupero di hardware obsoleto specialmente nelle scuole italiane,creazione di reti didattiche e laboratori informatici ad alte prestazioni e costi contenuti.
   
   
''C'è una crescente sensibilità verso il reimpiego dell'hardware obsoleto, del suo riutilizzo con finalità sociali, accademiche ma anche di business - si legge in una nota - Immaginiamo una scuola (ma potrebbe essere una qualsiasi organizzazione statale o privata) che abbia un parco computer obsoleto. Con Lazarus-NX queste macchine possono essere riutilizzate su piattaforma Open Source, svincolando l'organizzazione anche dalle spese di licenza tipiche del software proprietario.''
''C'è una crescente sensibilità verso il reimpiego dell'hardware obsoleto, del suo riutilizzo con finalità sociali, accademiche ma anche di business - si legge in una nota - Immaginiamo una scuola (ma potrebbe essere una qualsiasi organizzazione statale o privata) che abbia un parco computer obsoleto. Con Lazarus-NX queste macchine possono essere riutilizzate su piattaforma Open Source, svincolando l'organizzazione anche dalle spese di licenza tipiche del software proprietario.'' -->


== Link ==
== Link ==
* [http://www.freesoftwaremagazine.com/articles/what_is_x/ What is X?]: ineretessante articolo che parte dalle basi del funzionamento fino agli utilizzi più avanzati del server X in remoto.
* [http://www.freesoftwaremagazine.com/articles/what_is_x/ What is X?]: interessante articolo che parte dalle basi del funzionamento fino agli utilizzi più avanzati del server X in remoto;
* [http://www.tldp.org/HOWTO/XDMCP-HOWTO Linux XDMCP HOWTO]
* [http://www.tldp.org/HOWTO/XDMCP-HOWTO Linux XDMCP HOWTO]


[[Categoria:Xorg]]
[[Categoria:Xorg]]
3 581

contributi