En mi máquina local, ejecuto:
ssh -X [email protected]
(Para completar, también probé todo lo siguiente usando -Y con resultados idénticos).
Como era de esperar, esto accede bien a remotemachine.com, y todo parece estar bien. Sin embargo, si intento ejecutar xcalc, obtengo:
connect /tmp/.X11-unix/X0: No such file or directory
Error: Can't open display: localhost:10.0
Pero,
$ ls -la /tmp/.X11-unix/
total 36
drwxrwxrwt 2 root root 4096 2012-11-23 09:29 .
drwxrwxrwt 8 root root 32768 2012-11-29 08:22 ..
srwxrwxrwx 1 root root 0 2012-11-23 09:29 X0
Así que no solo existe /tmp/.X11-unix/X0, ¡tiene permisos universales r/w/x!
Anteriormente usé x-forwarding sin problemas, aunque no en algún momento...
uname -a en el servidor para referencia:
Linux machinename 2.6.32-25-generic #45-Ubuntu SMP Sat Oct 16 19:52:42 UTC 2010 x86_64 GNU/Linux
He estado buscando en la web durante un par de horas sin éxito. Otras menciones del mismo problema, pero sin soluciones.
Respuesta aceptada:
Si tiene un servidor X ejecutándose y DISPLAY
la variable de entorno se establece en :0
, que le dice a las aplicaciones que se conecten al servidor X usando un socket de dominio unix que generalmente se encuentra en Linux en /tmp/.X11-unix/X0
(aunque vea a continuación sobre el espacio de nombres abstracto en Linux reciente).
Cuando haces ssh a la máquina máquina remota , sshd
en máquina remota establece DISPLAY en localhost:10
(por ejemplo), lo que esta vez significa que las conexiones X se realizan a través de TCP al puerto 6010 de la máquina localhost. sshd en máquina remota escucha las conexiones allí y reenvía cualquier conexión entrante al cliente ssh. El cliente ssh luego intenta conectarse a /tmp/.X11-unix/X0
(en el extremo local, no en el remoto) para comunicarse con su servidor X.
Ahora, tal vez no tenga un servidor X en ejecución (¿está en Mac?) o tal vez el socket de dominio de Unix no se encuentre en /tmp/.X11-unix, lo que significaría que ssh no se configuró correctamente en la compilación. tiempo.
Para averiguar cuál es la ruta correcta para el socket de Unix, puede intentar un strace -e connect xlogo
(o el equivalente en su sistema) en su máquina local para ver qué hace una aplicación X normal.
netstat -x | grep X
también puede dar una pista.
Para que conste, en una máquina sibilante Linux Debian aquí, Xorg escucha en ambos /tmp/.X11-unix/X0
en el sistema de archivos y /tmp/.X11-unix/X0
en el espacio de nombres abstracto (generalmente escrito @/tmp/.X11-unix/X0
). Desde strace
, las aplicaciones X11 parecen usar ahora ese espacio de nombres abstracto de forma predeterminada, lo que explica por qué todavía funcionan si /tmp/.X11-unix
se elimina, mientras que ssh
no usa ese espacio de nombres abstracto.