ssh -X "Errore Xt: impossibile aprire il display: 0,0"


9

Sto provando ad aprire xtermsul mio server remoto (Ubuntu Server 10.04) con ssh:

ssh -X name@machine xterm

ma l'errore restituito è:

xterm Xt error: Can't open display: :0.0`

Ho cercato su Google e ho provato tutto quello che ho trovato. Sempre visualizzato questo errore. La variabile DISPLAY dovrebbe essere impostata automaticamente, giusto?

Parte di sshd_config:

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes

Qualche consiglio?


Riesci a correre xtermnel terminale corrente prima di lanciarlo?
enzotib,

@belacqua: non è richiesto. Di solito mi collego a un server headless remoto e potrei facilmente eseguire applicazioni X remote sul server X locale.
enzotib,

@enzotib - grazie; Non lo sapevo.
belacqua,

@enzotib scusa, non ho visto il tuo commento. Sì, posso aprire xterm sul mio computer locale
Fabian,

Risposte:


8

Se ssh è in grado di stabilire la connessione, verrà impostato DISPLAYsul valore corretto. Poiché hai X11DisplayOffsetimpostato 10 (il valore predefinito), ssh utilizzerà il primo display disponibile a partire da 10. Se vedi un valore inferiore a 10¹, allora qualcosa interferisce con il normale inoltro X11 impostato da ssh, almeno da prevalente DISPLAY. Il valore :0(o :0.0, la parte dopo il punto è irrilevante) indica il primo display che è stato avviato sulla macchina, che in casi tipici è la sessione attiva (o il prompt di accesso grafico) sulla console della macchina.

La spiegazione più probabile del comportamento che si osserva è che uno dei file di configurazione della shell viene impostato DISPLAY. Il colpevole più ovvio è ~/.bashrc(che a causa di una stranezza di bash viene eseguito ogni volta che il genitore di bash è rshdo sshd, anche se la shell non è interattiva). Un altro file che definisce le variabili di ambiente è /etc/environment. In tal caso, la soluzione è ovvia: non impostare DISPLAYlì. (Ci sono pochissimi casi in cui è necessario impostare DISPLAYmanualmente.)

Ci sono altre spiegazioni esotiche. Questo potrebbe accadere se hai cambiato la shell di login in screen(un'idea carina in teoria, ma non pratica) e hai un file di inizializzazione della shell che si imposta forzatamente DISPLAYall'interno dello schermo (non è una buona idea). Ciò può accadere anche se il server è stato configurato per accettare le variabili di ambiente inviate dal client ( AcceptEnvdirettiva in sshd_config), il client sta inviando DISPLAYe non è stato possibile stabilire la connessione X. Oppure potrebbe accadere se si imposta una variabile di ambiente sul server tramite la commanddirettiva in ~/.ssh/authorized_keys. O xtermpotrebbe essere una sceneggiatura.

¹ O qualunque sia il valore di X11DisplayOffsetnella configurazione del server, ma non è quasi mai cambiato dal valore predefinito.


1
avere dei modi elencati per risolvere i vari problemi menzionati sarebbe utile.
George Stocker,

@GeorgeStocker Tutti questi problemi hanno la forma "c'è qualche impostazione in un file di configurazione", quindi la soluzione per tutti questi è di rimuovere o modificare l'impostazione. Ce n'è uno in particolare che puoi identificare ma non correggere?
Gilles 'SO- smetti di essere malvagio' il

Vedo DISPLAY=localhost:11.0nel mio env, ma la sua rilevanza e se dovrei cambiarlo in non DISPLAY 10.0è chiaro.
George Stocker,

@GeorgeStocker Quindi i tuoi sintomi non corrispondono a questa domanda. Ho aggiornato la mia risposta per chiarire che 10 è il valore di interruzione al di sotto del quale si applica questa risposta. 11 è un valore previsto qui (probabilmente la seconda connessione SSH attiva con l'inoltro X).
Gilles 'SO- smetti di essere malvagio' il

Sto correndo DISPLAY=:0 xterme continuo a ricevere l' xterm: Xt error: Can't open display: :0errore, quindi la variabile di ambiente non è il problema.
Dan Dascalescu,

3

Il tuo comando dovrebbe funzionare, o almeno lo fa per me. Prova questo invece:

ssh -Y user@machine xterm

Modifica (1):

Prova questo:

ssh -X user@machine env

Ciò dovrebbe mostrare tutto l'ambiente. Ci dovrebbero essere varie cose SSH e anche DISPLAY. DISPLAY dovrebbe essere 10.0.

Puoi anche provare questo:

ssh -X user@machine DISPLAY=10.0 xterm

L'ho provato con -Yma non ha funzionato neanche. Ricevo ancoraCan't open display: :0.0
Fabian,

Qual è la tua macchina locale in esecuzione? Il: 0.0 riguarda, dato che è il valore predefinito per un server X locale , non remoto ...
ed.

Uso Ubuntu 10.04, Linux Mint 11 o Mac OS X 10.7. L'utilizzo dipende dalla posizione (lavoro / casa), ma l'errore è lo stesso
Fabian,

Modificherò la risposta ... (1)
ed.

La mia variabile DISPLAY èlocalhost:10.0
Alexis Wilke,

2

Il controllo di accesso di X è probabilmente in mezzo.

Esegui xhost +(dal pacchetto x11-xserver-utils) per disabilitare completamente il controllo degli accessi.


2

Inoltre X11Forwarding yes, dovevo anche aggiungere

X11UseLocalhost no

in /etc/ssh/sshd_config

come descritto qui .


1

Ho scoperto che xauth non era stato installato.


0

Inoltre, controlla che X11 sia installato sul lato client. Stavo riscontrando questo problema quando ho aggiornato il mio Mac a OS X Mountain Lion. Mountain Lion rimuove X11, quindi è necessario installarlo nuovamente tramite il progetto X Quartz open source. http://xquartz.macosforge.org/landing/


-1

È necessario prima aprire la connessione e, una volta stabilito, aprire xterm.


La ringrazio per la risposta. Cosa intendi con "apri una connessione"? Quando uso ssh -X name@machine e dopo la connessione xtermottengo lo stesso errore. Intendevi quello? ;)
Fabian,

No, dovrebbe funzionare anche senza prima collegarsi.
enzotib,

@Fabian - Credo sia quello che intendeva dire.
belacqua,

Penso che sia necessaria una connessione VNC.
nanofarad,

@enzotib, beh ... in realtà si sshsta prima connettendo, quindi xterm viene avviato in sshquell'ambiente. Quindi in entrambi i casi è praticamente la stessa cosa solo se si utilizza ssh -X remoteprima, quindi è possibile verificare se si verifica con echo $DISPLAYper assicurarsi che $DISPLAYsia impostato correttamente sul computer remoto dopo un ssh -X.
Alexis Wilke,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.