Non so voi, ma io da quando ho aggiornato i miei Mac ad OS X 10.7 e versioni successive, spesso incontro alcuni problemi nella connesione remota via ssh ai miei server quando è necessario veicolare informazioni di carattere grafico sul server X installato nel Mac.
Apple, infatti, ha smesso di preparare una versione di X11 compilata internamente dai suoi sviluppatori e si è affidata completamente ai lavori del progetto open source XQuartz – come dichiarato esplicitamente nella pagina di supporto HT5293.
Il problema principale appare quando ci si connette ad un server remoto attraverso il più classico dei comandi
ssh -X utente@server-remoto.it
… ad un certo punto, dopo 20 minuti dal login tipicamente, lanciando un’applicazione grafica del server remoto si ottiene a terminale un messaggio di avviso del tipo
can’t open display: localhost:10.0
Motivo di ciò è che, secondo la configurazione di default della maggior parte delle distribuzioni GNU/Linux, l’X forwarding dei pacchetti su connessione ssh è considerata untrusted ed è soggetta ad un timeout di 20 minuti se inattiva. Cioè se io attivo la connessione ssh richiedendo l’X forwarding, modifico dei parametri, faccio altro e soltanto dopo 20 minuti mi ricordo di lanciare il programma grafico remoto del server, tale connessione sarà stata inattiva e quindi de-autorizzata dal sistema. Se invece subito dopo aver fatto il login lancio l’applicazione grafica questa funzionerà indefinitivamente sino a che io non andrò a chiuderla.
Detto questo la soluzione appare ovvia, dovremo andare il funzionamento di questo meccanismo di timeout. Questo può essere ottenuto secondo due filosofie di pensiero: dichiarare per sempre trusted l’X forwarding da parte del server, oppure aumentare il valore di default del timeout (tenendo presente che c’è un valore massimo di 596 ore).
Il consiglio è quello di impostare a ‘yes’ il valore del parametro ForwardX11Trusted nel file di configurazione /etc/ssh_config
del nostro server remoto, oppure impostare nel proprio client il valore ForwardX11Timeout XXh (dove XX sono le ore dopo cui innescare il timeout) nel file ~/.ssh/config del nostro Mac.