
Para mí, es extraño que al usar una conexión ssh con reenvío X11, un usuario y un root puedan ver xclock
, pero otro usuario no pueda verlo. ¿Por qué?
mahmood@cluster:~$ xclock
^C
mahmood@cluster:~$ su
Password:
root@cluster:mahmood# xclock
^C
root@cluster:mahmood# su - hmousavi
hmousavi@cluster:~$ xclock
MobaXterm X11 proxy: Authorisation not recognised
Error: Can't open display: localhost:10.0
hmousavi@cluster:~$
PD: ^C
significa que pude ver la xclock
ventana, así que presioné ^C
para regresar a la terminal.
Respuesta1
La conexión a una pantalla X11 requiere dos datos: el nombre para mostrar (normalmente pasado en la DISPLAY
variable de entorno) y elGalleta, que es una contraseña para la pantalla que toda aplicación debe mostrar al conectarse. Normalmente, la cookie se almacena en ~/.Xauthority
, pero se puede almacenar en un archivo diferente indicado por la XAUTHORITY
variable de entorno.
Parece que el valor DISPLAY
establecido por SSH fue conservado por las dos llamadas a su
. Sin embargo, la cookie está en ~mahmood/.Xauthority
; Cuando ejecuta un programa como hmousavi, el programa busca una cookie ~hmousavi/.Xauthority
y encuentra un valor diferente.
En principio, podría ejecutar XAUTHORITY=~mahmood/.Xauthority xclock
, pero presumiblemente hmousavi no tiene permiso para leer ese archivo; el .Xauthority
archivo no debería ser legible para otros usuarios. Puede usar el xauth
comando dos veces, una como mahmood para extraer el valor de la cookie ( xauth list localhost:10.0
) y otra como hmousavi para importar ese valor ( xauth merge
), pero eso es engorroso. La forma más sencilla de hacer que las aplicaciones X11 funcionen es usar SSH en todo momento, porque SSH configura el reenvío X11 automáticamente:
mahmood@cluster:~$ ssh -X hmousavi@localhost
hmousavi@cluster:~$ xclock
Agregue la clave pública SSH de mahmood a la de hmousavi .ssh/authorized_keys
para permitir esto.