ssh -X "Error de Xt: no se puede abrir la pantalla:: 0.0"


9

Estoy tratando de abrir xtermen mi servidor remoto (Ubuntu Server 10.04) con ssh:

ssh -X name@machine xterm

pero el error devuelto es:

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

Busqué en Google e intenté todo lo que encontré. Aún recibo este error. La variable DISPLAY se debe configurar automáticamente, ¿verdad?

Parte de sshd_config:

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes

¿Algún consejo?


¿Se puede ejecutar xtermen la terminal actual antes de ssh-ing?
enzotib

@belacqua: no es obligatorio. Por lo general, me conecto a un servidor remoto sin cabeza y podría ejecutar fácilmente aplicaciones X remotas en el servidor X local.
enzotib

@enzotib - gracias; No lo sabia.
belacqua

@enzotib lo siento, no vi tu comentario. Sí, puedo abrir xterm en mi máquina local
Fabian

Respuestas:


8

Si ssh puede establecer la conexión, se establecerá DISPLAYen el valor adecuado. Como ha X11DisplayOffsetestablecido en 10 (el valor predeterminado), ssh usará la primera pantalla disponible a partir de 10. Si ve un valor inferior a 10¹, entonces algo está interfiriendo con el reenvío X11 normal configurado por ssh, al menos por primordial DISPLAY. El valor :0(o :0.0la parte posterior al punto es irrelevante) indica la primera pantalla que se inició en la máquina, que en casos típicos es la sesión activa (o el mensaje de inicio de sesión gráfico) en la consola de la máquina.

La explicación más probable para el comportamiento que observa es que se establece uno de sus archivos de configuración de shell DISPLAY. El culpable más obvio es ~/.bashrc(que debido a una peculiaridad de bash se ejecuta cada vez que el padre de bash es rshdo sshd, incluso si el shell no es interactivo). Otro archivo que define variables de entorno es /etc/environment. Si ese es el caso, la solución es obvia: no establezca DISPLAYallí. (Hay muy pocos casos en los que deba configurarlo DISPLAYmanualmente).

Hay otras explicaciones exóticas. Esto podría suceder si ha cambiado su shell de inicio de sesión a screen( DISPLAYuna buena idea en teoría, pero no práctica) y tiene un archivo de inicialización de shell que se establece a la fuerza dentro de la pantalla (no es una buena idea). Esto también podría suceder si configuró el servidor para aceptar las variables de entorno enviadas por el cliente ( AcceptEnvdirectiva en sshd_config), el cliente está enviando DISPLAYy no se pudo establecer la conexión X. O podría suceder si configura una variable de entorno en el servidor a través de la commanddirectiva in ~/.ssh/authorized_keys. O xtermpodría ser un guión.

¹ O cualquiera que sea el valor de X11DisplayOffsetestá en la configuración del servidor, pero casi nunca ha cambiado desde el valor predeterminado.


1
Sería útil tener formas enumeradas para solucionar los diversos problemas que menciona.
George Stocker

@GeorgeStocker Todos estos problemas son de la forma "hay alguna configuración en un archivo de configuración", por lo que la solución para todos estos es eliminar o cambiar la configuración. ¿Hay alguna en particular que pueda identificar pero no corregir?
Gilles 'SO- deja de ser malvado'

Veo DISPLAY=localhost:11.0en mi env, pero su relevancia y si debería cambiarlo no DISPLAY 10.0está claro.
George Stocker

@GeorgeStocker Entonces sus síntomas no coinciden con esta pregunta. He actualizado mi respuesta para aclarar que 10 es el valor de corte por debajo del cual se aplica esta respuesta. 11 es un valor esperado aquí (probablemente la segunda conexión SSH activa con reenvío X).
Gilles 'SO- deja de ser malvado'

Estoy ejecutando DISPLAY=:0 xtermy todavía recibo el xterm: Xt error: Can't open display: :0error, por lo que la variable de entorno no es el problema.
Dan Dascalescu

3

Su comando debería funcionar, o al menos lo hace para mí. Intenta esto en su lugar:

ssh -Y user@machine xterm

Editar (1):

Prueba esto:

ssh -X user@machine env

Eso debería mostrar todo el entorno. Debería haber varias cosas SSH allí, y también PANTALLA. PANTALLA debe ser 10.0.

También puedes probar esto:

ssh -X user@machine DISPLAY=10.0 xterm

Lo probé -Ypero tampoco funcionó. Todavía me saleCan't open display: :0.0
Fabian

¿Cuál es su máquina local funcionando? El: 0.0 es preocupante, ya que es el valor por defecto para un local de servidor X, no un solo mando a distancia ...
ed.

Yo uso Ubuntu 10.04, Linux Mint 11 o Mac OS X 10.7. El uso depende de la ubicación (trabajo / hogar), pero el error es el mismo
Fabian

Editaré la respuesta ... (1)
ed.

Mi variable DISPLAY eslocalhost:10.0
Alexis Wilke

2

El control de acceso de X probablemente esté en el camino.

Ejecute xhost +(desde el paquete x11-xserver-utils) para deshabilitar completamente el control de acceso.


2

Además X11Forwarding yes, también necesitaba agregar

X11UseLocalhost no

en /etc/ssh/sshd_config

como se describe aquí .



0

Además, compruebe que tiene X11 instalado en el extremo del cliente. Estaba teniendo este problema cuando actualicé mi Mac a OS X Mountain Lion. Mountain Lion elimina X11, por lo que debe instalarlo nuevamente a través del proyecto de código abierto X Quartz. http://xquartz.macosforge.org/landing/


-1

Primero debe abrir la conexión y, una vez establecida, abrir xterm.


Gracias por su respuesta. ¿Qué quieres decir con "abrir una conexión"? Cuando uso ssh -X name@machine y después de la conexión xtermme sale el mismo error. ¿Te refieres a eso? ;)
Fabian

No, debería funcionar también sin conectarse primero.
enzotib

@Fabian: creo que a eso se refería.
belacqua

Creo que es necesaria una conexión VNC.
nanofarad

@enzotib, bueno ... en realidad sshse conecta primero, luego se inicia xterm en ese sshentorno. De cualquier manera, es casi lo mismo solo si lo usa ssh -X remoteprimero, luego puede verificar si lo echo $DISPLAYhace para asegurarse de que $DISPLAYesté configurado correctamente en la computadora remota después de un ssh -X.
Alexis Wilke
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.