Desde mi máquina local ssh
a un servidor remoto junto con la autenticación con respecto a la pantalla X. Sé que en este proceso MIT-MAGIC-COOKIES
se utilizan y el valor tanto en el servidor como en el cliente debe ser idéntico para que el proceso de autenticación sea válido.
Sin embargo, cuando inicio sesión en un servidor remoto y confirmo que la pantalla X funciona bien (por ejemplo, ejecutándola xclock
para ver si la xclock
aplicación aparece en mi máquina local), cuando verifico el valor de las cookies, el valor en la máquina local y eso en el servidor remoto parece ser diferente. Aquí están las líneas de comando:
valor de la cookie en el servidor remoto
chulhyun@chulhyun-Inspiron-3420:~$ ssh -X Black@$labcom
Last login: Wed Jun 25 10:02:25 2014 from
Black@Black-PC ~
$ xclock ### xclock appears in local machine.
Black@Black-PC ~
$ xauth list
Black-PC/unix:10 MIT-MAGIC-COOKIE-1 708f623489b1ea129a77e98287d130ca
valor de la cookie en la máquina local
chulhyun@chulhyun-Inspiron-3420:~$ xauth list
chulhyun-Inspiron-3420/unix:0 MIT-MAGIC-COOKIE-1 5ddd2ce92004eab53ceee8a64b7b88c0
Como puede ver, el valor de las cookies en dos máquinas es diferente. Entonces, ¿no debería funcionar la pantalla X?
¿Que me estoy perdiendo aqui?
PD: Escuché que $XAUTHORITY
contiene la ruta al xauthority
archivo y verifiqué esa ruta en la máquina local:
chulhyun@chulhyun-Inspiron-3420:~$ echo $XAUTHORITY
/var/run/gdm/auth-for-chulhyun-iZfH2u/database
Cuando miro el archivo de "base de datos", el contenido es ilegible porque está compuesto de caracteres extraños.
^A^@^@^Vchulhyun-Inspiron-3420^@^A0^@^RMIT-MAGIC-COOKIE-1^@^P]?,? ^D??<??? K{??
¿Podría esto estar relacionado con la pregunta?
actualizar
resultado de xhost
y $XAUTHORITY
en el servidor remoto
Black@Black-PC ~
$ xhost
access control enabled, only authorized clients can connect
SI:localuser:chulhyun
Black@Black-PC ~
$ echo $XAUTHORITY
*Resulta que $XAUTHORITY
no está definido... ¿es esto normal?
resultado de xhost
en la máquina local
chulhyun@chulhyun-Inspiron-3420:~$ xhost
access control enabled, only authorized clients can connect
SI:localuser:chulhyun
Respuesta1
Creo que te estás confundiendo sobre cómo SSH realiza el proxy de la conexión X11 a través del túnel que está establecido en el lado del servidor remoto y cómo funcionan normalmente las cookies mágicas. Desde la página de manual de SSH:
extractoThe DISPLAY value set by ssh will point to the server machine, but with a
display number greater than zero. This is normal, and happens
because ssh creates a “proxy” X server on the server machine for forwarding
the connections over the encrypted channel.
ssh will also automatically set up Xauthority data on the server machine.
For this purpose, it will generate a random authorization cookie,
store it in Xauthority on the server, and verify that any forwarded
connections carry this cookie and replace it by the real cookie when the
connection is opened. The real authentication cookie is never sent to the
server machine (and no cookies are sent in the plain).
Entonces, parecería que las cookies mágicas que se le muestran en el lado del servidor remoto no son en realidad las verdaderas cookies mágicas en el servidor local (su final). Recuerde que la PANTALLA se configura así cuando ingresa por SSH a un servidor remoto:
$ echo $DISPLAY
localhost:11.0
Y las galletas mágicas están conectadas por esto $DISPLAY
:
$ xauth list
remotey.dom.com/unix:11 MIT-MAGIC-COOKIE-1 00f505f4c5731714d30f24a956d4cb8f
La noticia es esa /unix:11
. Esa es la cookie mágica para el lado local de la conexión SSH, no la X11 de su servidor local, que normalmente sería :0
.
.Xautoridad
Es cierto que este archivo contiene esas cookies mágicas, pero es un archivo binario y normalmente interactúas con él mediante el xauth
comando. Consulte xauth
la página de manual de para obtener más información sobre esto.
hacerlo manualmente
Muchas veces verás aparecer este mensaje si haces lo siguiente:
$ ssh -X user1@remotey
$ su - user2
$ xclock
X11 connection rejected because of wrong authentication.
X connection to localhost:10.0 broken (explicit kill or server shutdown).
Esto se debe a que el segundo usuario .Xauthority
no sabe nada de la cookie mágica que pasó SSH cuando inició sesión inicialmente. Puedes generar lo xauth add
requerido mientras eres usuario1 y usarlo como usuario2 de esta manera:
$ ssh -X user1@remotey
$ echo $DISPLAY
localhost:10.0
Observe arriba que está en la pantalla # :10.0
. Ahora genere lo xauth add
requerido para ese número de pantalla:
$ echo xauth add $(xauth list ${DISPLAY#localhost})
xauth add remotey.dom.com/unix:10 MIT-MAGIC-COOKIE-1 111ef940f6d75b4a9eb64ea3579ef67e
Ahora conviértete en usuario2 y agrégalo:
$ su - user2
$ xauth add remotey.dom.com/unix:10 MIT-MAGIC-COOKIE-1 111ef940f6d75b4a9eb64ea3579ef67e
$ xclock
Y obtenemos el cronometraje como se esperaba.
NOTA:También puedes hacer cosas en una sola línea de comando una vez que hayas comprendido lo que sucede con lo anterior.
usando su$ xauth extract - ${DISPLAY#localhost} | \
su - user2 -c "xauth merge -; xclock"
usar sudo
$ xauth extract - ${DISPLAY#localhost} | \
sudo su - user2 -c "xauth merge -; xclock"