Gracias a @jensd, @unxnut por ayudarme. basado en sus comentarios pude resolver el problema.
La solución necesitaba dos pasos:
- la variable DISPLAY debe establecerse correctamente.
- cuando se envía al servidor remoto, el interruptor -X debe estar encendido
mis intentos anteriores carecen de una o ambas de estas dos condiciones.
De todos modos, para los usuarios posteriores que vean esto, aquí hay ejemplos para mostrarles lo que estoy tratando de decir.
caso 1
mi máquina local no tendrá configurada la variable DISPLAY. Y luego haré un ssh al servidor remoto con el interruptor -X y luego intentaré ejecutarlo xclock
.
Black@Black-PC ~
$ echo $DISPLAY
## the blank means that DISPLAY variable has not been specified##
Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
Last login: Tue Jun 24 22:23:13 2014 from
[kwagjj@James5 ~]$ xclock
Error: Can't open display:
[kwagjj@James5 ~]$ setenv | grep $DISPLAY
DISPLAY: Undefined variable.
como puede ver, Error: Can't open display:
se muestra un error en el terminal del servidor remoto.
case2
esta vez, en la máquina local, especificaré la variable DISPLAY. Pero cuando estoy ssh'ing, no voy a encender el interruptor -X. El resultado será un fracaso:
Black@Black-PC ~
$ export DISPLAY=:0.0
Black@Black-PC ~
$ echo $DISPLAY
:0.0
Black@Black-PC ~
$ ssh kwagjj@$labserver -p 122
Last login: Tue Jun 24 22:33:32 2014 from
[kwagjj@James5 ~]$ xclock
Error: Can't open display:
[kwagjj@James5 ~]$ setenv | grep DISPLAY
[kwagjj@James5 ~]$
Al principio puede ver que he configurado correctamente la variable DISPLAY. Pero aun así, después de ssh'ing (sin el modificador -X) el xclock no se ejecuta.
* setenv | grep DISPLAY
Aquí se puede ver un resultado diferente con (comparar con el caso 1). en el caso 2, el resultado está en blanco. por otro lado, el resultado del caso 1 a esta línea de comando es DISPLAY: undefined variable
... No estoy seguro de cómo se produce esta diferencia, pero me da la impresión de que está relacionado con si has satisfecho la condición 1 o 2 .
case3
esta vez, especificaré correctamente la variable DISPLAY en la máquina local y también ssh al servidor remoto con mi interruptor -X activado.
Black@Black-PC ~
$ echo $DISPLAY
:0.0
Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
Warning: untrusted X11 forwarding setup failed: xauth key data not generated
Warning: No xauth data; using fake authentication data for X11 forwarding.
Last login: Tue Jun 24 22:37:27 2014 from
[kwagjj@James5 ~]$ xclock &
[1] 9174
[kwagjj@James5 ~]$ setenv | grep DISPLAY
DISPLAY=localhost:11.0
[kwagjj@James5 ~]$
con esta configuración, xclock
funciona !! Aquí hay una captura de pantalla para demostrar que no estoy mintiendo.
El xclock se muestra con éxito en mi máquina local.
Nuevamente, mira el resultado de setenv | grep DISPLAY
en este caso. Ahora se nota DISPLAY=localhost:11.0
. Por lo que sé, esto está relacionado con MIT-MAGIC-COOKIE en el archivo .Xauthority, pero como no sé mucho sobre esto, no iré más allá.
Conclusión: de los tres casos anteriores, podemos confirmar que para que X Windows remoto se muestre correctamente, tanto la variable 1. DISPLAY de la máquina local como 2. el -X
interruptor ssh deben estar configurados correctamente. Por supuesto, el servidor remoto debe permitir el reenvío X11.