Manovrare X da remoto: differenze tra le versioni

m
verificata
m (verificata)
 
(23 versioni intermedie di 7 utenti non mostrate)
Riga 1: Riga 1:
=Introduzione=
{{Versioni compatibili|Jessie|Stretch|Buster}}
Questa guida nasce dalla discussione [http://www.debianizzati.org/component/option,com_joomlaboard/Itemid,29/func,view/catid,19/id,14487/ Manovrare X da remoto] apparsa sul forum di Debianizzati.Org
== Introduzione ==
Nelle distribuzioni GNU/Linux e in generale nei sistemi UNIX e Unix-like l'interfaccia grafica (''GUI'') non è parte del kernel ma gestita da un programma a parte: l' ''X window system'' o semplicemente server '''X''', di cui [[Xorg]] rappresenta l'implementazione attualmente più diffusa.


=Configurazione=
Le richieste dai client X di gestire le finestre avvengono di solito localmente, ma nulla impedisce di gestire le finestre attraverso la rete, permettendo a utenti remoti di effettuare il login sul display manager (<code>xdm</code>, <code>gdm</code>, <code>kdm</code>, <code>lightdm</code>, ecc...) per accedere al server X locale attraverso ''XDMCP'' ('''''X''' '''D'''isplay '''M'''anager '''C'''ontrol '''P'''rotocol'').
Ogni home o client system software che si rispetti ha un 'interfaccia grafica(GUI).Microsoft la include nel suo systema ,o kernel che dir si voglia.Le ditribuzioni GNU/Linux la includono nell' installazione di default.In ogni modo nelle distribuzioni GNU/Linux e POSIX la GUI non e' parte del kernel ma un programma a parte l' "X window system" o semplicemente X.Precisamente X non e' la GUI.Xdm,Gdm,Kdm sono GUI.X � una struttura che la GUI usa per i suoi scopi.Mentre la GUI gestisce bottoni , finestre , testi ecc.X gestisce applicazioni di piu' basso livello :input di tastiera, mouse,fonts ecc.Molte persone potrebero pensare riguardo per esempio ai termini X-server e X-client al contrario di quello che potrebbe sembrare .Un X server e' una macchina nel network dove e' installato un window manager e dove altre altre macchine , X-clients , ci si possono collegare e gestire finestre,scrivere testi,navigare in rete e che puo' leggere il tuo input.In definitiva cosa un X server "serve" sono finestre e il tuo input da mouse o tastiera.


=Utilizzo=
Per semplicità di configurazione, e per la stabilità dimostrata attraverso i passaggi di versione di Debian, in questa guida si considera unicamente '''<code>xdm</code>'''.


{{Warningbox | Ogni comunicazione da e verso il server X avverrebbe in chiaro, e sarebbe pertanto manipolabile e/o ascoltabile sulla rete. '''Questo rappresenta un <u>enorme rischio</u> per la sicurezza del sistema!'''


=Test=
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.}}
 
== Lato server ==
=== 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]] basta:
<pre>
# apt install xdm xorg
</pre>
 
=== Configurazione di xdm ===
Sempre con [[privilegi di amministrazione]], è sufficiente modificare i file di configurazione indicati in questa sezione con un editor di testo, per esempio [[nano]]:
<pre>
# nano /etc/X11/xdm/xdm-config
</pre>
 
In <code>/etc/X11/xdm/xdm-config</code> commenta:
<pre>
DisplayManager.requestPort:  0
</pre>
che diventa:
<pre>
!DisplayManager.requestPort:  0
</pre>
 
Salva il file (con <code>nano</code> premi <code>Ctrl-o</code> e per uscire <code>Ctrl-x</code>).
 
In modo analogo, apri il file <code>/etc/X11/xdm/Xaccess</code> e togli il comento a:
<pre>
#*        #any host can get a login window
</pre>
che diventerà:
<pre> 
*        #any host can get a login window
</pre>
 
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>):
<pre>
192.168.0.*
</pre>
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>
:0 local /usr/bin/X :0 vt8 -nolisten tcp
</pre>
che diventerà:
<pre>
:0 local /usr/bin/X :0 vt8
</pre>
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...).
 
È 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.
 
{{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.}}
 
Per rendere effettive le modifiche, è necessario riavviare il display manager:
<pre>
# service xdm restart
</pre>
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>
# apt install xorg
</pre>
 
=== Utilizzo ===
Se l'indirizzo IP del server è <code>192.168.0.2</code>, dal client sarà sufficiente il comando:
<pre>
# X -query 192.168.0.2 :0 vt8
</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.
 
In alternativa, se si è nella stessa rete locale del server, è anche possibile:
<pre>
# X -broadcast :0 vt8
</pre>
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.
 
Si visualizzerà <code>xdm</code> in esecuzione sul server, che si potrà utilizzare per autenticarsi, utilizzando le credenziali di accesso di un utente che ha accesso alla macchina remota.
 
Si avrà così accesso a un'intera sessione grafica, anche se con qualche limitazione di performance. Si noti infatti che il protocollo X11 trasmetterà tutto lo schermo, comprese le aree non necessarie perché non cambiate: non c'è una cache né alcun tipo di funzionalità "trasmetto solo cosa è cambiato".
 
== Link ==
<!-- link commentato: * [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]
 
{{Autori
|Autore = [[Utente:HAL 9000|HAL 9000]] 17:50, 8 set 2019 (CEST) <br/>(guida originariamente scritta da [[Utente:MaXeR|MaXeR]])
|Estesa_da =
|Verificata_da =
|Numero_revisori = 0
}}
 
[[Categoria:Xorg]][[Categoria:Altri servizi di rete]]
3 581

contributi