Comprender la variable de entorno X Windows DISPLAY al hacer túneles

9

Quiero ssh a servidores remotos, ambos ejecutándose CentOScon X11Forwardinghabilitado.

Sin embargo, la aplicación X no puede ejecutarse correctamente en uno de ellos: en el host B funciona bien. Pero en el host AI aparece el error "no se pudo conectar a la pantalla", cada vez que inicio la aplicación X.

Después de verificar la DISPLAYvariable de entorno en el host A, que creo que está relacionada con la ventana X, encontré su valor localhost:10.0. Siguiendo los consejos aquí , cambio DISPLAY=0:10.0y funciona. Sin embargo, DISPLAYen el host B todavía está localhost:10.0y funciona bien.

Mi pregunta es, ¿qué DISPLAYrepresenta el valor en ? ¿Cuál es la diferencia entre localhost:10.0y 0:10.0?

Se dice que localhostidentifica un nombre de host. Entonces, ¿qué host identifica, el servidor (host A / B) en el que se ejecuta mi aplicación X o mi cliente local donde quiero que se muestre la ventana X?

Cualquier sugerencia o puntero a la documentación sería apreciada.

Summer_More_More_Tea
fuente

Respuestas:

5

Parte de la respuesta se puede encontrar aquí: /programming/746119/how-do-you-use-display-specifications

La variable DISPLAY es básicamente 3 componentes:

<host>:<display>[.<screen>]

En lo que respecta a localhost aka 127.0.0.1 vs. 0.0.0.0 aka 0, puedes echar un vistazo a esta publicación:

/server/78048/whats-the-difference-between-ip-address-0-0-0-0-and-127-0-0-1

Lo que explica la diferencia.

En su caso particular, 0.0.0.0:10.0 y localhost: 10.0 tendrían el mismo efecto pero básicamente significarían:

  1. conectarse en cualquier interfaz que tenga configurada la pantalla 10
  2. conectarse en lo0 al oyente de la pantalla 10.

Prácticamente no habría diferencia ya que en el primer caso el análisis de todas las interfaces comenzaría con lo0, que normalmente es la primera interfaz de la lista.

Karlson
fuente
1
Gracias al principio. Me parece que el verdadero problema sigue tus consejos. El verdadero problema es que localhostestá vinculado 192.168.1.200(alguna IP específica como esa. No quiero exponer mi configuración real) en el host A. También funciona cuando se exporta DISPLAY=127.0.0.1:10.0. ¿El reenvío X solo funciona en la interfaz de bucle invertido?
Summer_More_More_Tea
localhostes un nombre especial que se une a una interfaz de bucle invertido (lo0) en Linux, nunca debe estar vinculado a una dirección IP real. En realidad, puede verificar el enlace ejecutando sudo netstat -apn | grep 6010su SSH debe estar escuchando en ese puerto la conexión de pantalla. Por lo que puedo decir es 127.0.0.1solo.
Karlson