ssh y sudo pero sin $DISPLAY

ssh y sudo pero sin $DISPLAY

Normalmente hago esto en ssh para obtener una aplicación X usandosudo su

ssh -X server

Iniciar sesión OKI

xauth list $DISPLAY

que vuelve a mi

server/unix:10  MIT-MAGIC-COOKIE-1  blablablablabla

Entonces lo hago

sudo su
xauth add server/unix:10  MIT-MAGIC-COOKIE-1  blablablablabla

Y después de ejecutar una aplicación X... lo entiendo, es correcto.

El problema está en Centos7, lo hago.

xauth list $DISPLAY

Y no devuelve nada. Intento agregar cookies mágicas del MIT dadas por

xauth list

Pero claro, no funciona. El reenvío X normal a través de ssh, sin sudo, funciona.

La configuración de sshd es la misma en 3 servidores:

  1. slackwareOBRAS
  2. hpux OBRAS
  3. centos7 NO FUNCIONA

Respuesta1

Otra solución es fusionar el archivo .Xauthority del usuario actual con el del usuario root.

  1. ssh user@host
  2. cambie los permisos del archivo .Xauthority para que root también tenga acceso a él.
  3. sudo su - root
  4. xauth merge /home/users/user/.Xauthority

Prueba

gedit somefile.log

Debería abrir una ventana de gedit.

Respuesta2

Para que la solución sea permanente, puede modificar el .bashrcarchivo del usuario de inicio de sesión agregando

if [ -z "$XAUTHORITY" ]; then
    export XAUTHORITY=$HOME/.Xauthority
fi

además tienes que actualizar tu sudoersarchivo agregando la fila

Defaults env_keep+="DISPLAY XAUTHORITY"

Si root tiene permisos de lectura en el .Xauthorityarchivo del usuario que inició sesión, podrá utilizar aplicaciones X.

Respuesta3

Solución encontrada. Un método alternativo copiado de esteBlog Usando este script

userfirst=sshloginuser
usersecond=sudoorsuuser

$usersecond@host$

    su - $userfirst -c 'xauth list' |\
         grep `echo $DISPLAY |\
             cut -d ':' -f 2 |\
             cut -d '.' -f 1 |\
             sed -e s/^/:/`  |\
         xargs -n 3 xauth add

O simplemente iniciar sesión como usuario1

xauth list

su o sudo su usuario2

xauth add OUTPUTOFXAUTHLIST

Respuesta4

Un comando genérico muy simple:

sudo xauth merge /home/$USER/.Xauthority

Esto activa el entorno raíz y fusiona la información xauth del usuario actual (no raíz).

Otra alternativa debería evitar el problema de propiedad informado en los comentarios de Slackware:

cat ~/.Xauthority | sudo xauth merge -

información relacionada