Reenvío X11 a través de SSH y su

Reenvío X11 a través de SSH y su

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: ^Csignifica que pude ver la xclockventana, así que presioné ^Cpara regresar a la terminal.

Respuesta1

La conexión a una pantalla X11 requiere dos datos: el nombre para mostrar (normalmente pasado en la DISPLAYvariable 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 XAUTHORITYvariable de entorno.

Parece que el valor DISPLAYestablecido 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/.Xauthorityy encuentra un valor diferente.

En principio, podría ejecutar XAUTHORITY=~mahmood/.Xauthority xclock, pero presumiblemente hmousavi no tiene permiso para leer ese archivo; el .Xauthorityarchivo no debería ser legible para otros usuarios. Puede usar el xauthcomando 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_keyspara permitir esto.

información relacionada