Como exportar las X por medio de ssh
RECORDATORIO
Esto es el típico recordatorio, una anotación en un papel que siempre extravías.
Fuera de su contexto puede no tener ningún sentido.
24/10/2012
Contents
Como exportar las X por medio de ssh
Vamos a exportar las X por medio de un túnel ssh y un usuario que no es con el que nos logeamos. Es este ejemplo usamos la máquina "machine" y el usuario destino "oracle", al cual tenemos acceso por medio de sudo.
Tras tener configurado el servidor X en nuestro equipo, procedemos a abrir una sesión ssh contra la máquina objetivo (machine), ya sea por medio del parámetro -X de ssh en línea de comandos, o por medio del de activar "SSH => X11 => Enable X11 forwading" de putty o similares.
- Nos logeamos a la máquina deseada
ssh -X usuario@machine
Al logearnos de ésta manera, se genera el fichero .Xauthority que genera una clave única para conectarnos por el túnel ssh a nuestro servidor X.
Si lanzamos cualquier aplicación X, esta se tiene que ver en nuestro servidor X, por ejemplo, el relog analógico:
xclock
Para conseguir esto con otro usuario, tenemos que extraer la clave del fichero .Xauthority, para luego autorizar al otro usuario. Esto se realiza con el comando xauth:
- Listamos las claves que están autorizadas:
usuario@machine$ xauth list machine/unix:10 MIT-MAGIC-COOKIE-1 22e640aa656764ee569ef56bc96c867c
- Cambiamos al usuario oracle (también se puede utilizar su a secas):
sudo su - oracle
- Autorizamos al usuario oracle a ejecutar programas en nuestro servidor X:
oracle@machine$ xauth add machine/unix:10 MIT-MAGIC-COOKIE-122e640aa656764ee569ef56bc96c867c
Exportamos la variable "DISPLAY" para que apunte al túmel ssh. El número de puerto es el mismo que da la salida de "xauth":
oracle@machine$ export DISPLAY=localhost:10
Ya podemos ejecutar aplicaciones X en nuestor Xserver de manera totalmente segura.
La redirección y el sudo como root
Puede que en algún momento deseemos que un usuario redirija aplicaciones gráficas como root, pero que no tenga acceso a dicho usuario. En versiones "modernas" de sudo, se requiere indicar la ubicación del fichero .Xauthority para que la operativa funcione:
export XAUTHORITY=~/.Xauthority sudo xclock
Se puede realizar sin exportar la variable, sólo a la hora de ejecutar el programa requerido:
sudo XAUTHORITY=~/.Xauthority xclock
Posibles problemas
- Los Xserver para windows suelen ser difíciles de configurar. Prestar especial atención a la configuración de seguridad.
- Algunos Xserver para windows son realmente malos. Probar otros puede ser LA alternativa (por ejemplo, instalar vcxsrv o Cygwin/X
- Hay que asegurarse que el cliente ssh exporta realiza correctamente el túnel para las X. Esto se puede comprobar si la varible DISPLAY es generada "automágicamente" en la máquina remota.
- El servidor ssh debe redireccionar las X para que esto funcione. Para realizarlo hay que activar la directiva X11Forwarding del fichero /etc/ssh/sshd_config
Redirección extremadamente lenta
En una máquina AIX este procedimiento funcionaba, pero con unos tiempos de respuesta realmente lentos. El problema era que la variable LANG estaba mal definida:
LANG=ES_ES.UTF-8
Un vistazo detallado delata que el segundo ES debiera ser es
LANG=es_ES.UTF-8
Definiendo correctamente la variable o eliminando la misma, la redirección funciona correctamente.
Referencias =
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
http://sourceforge.net/projects/vcxsrv/
http://sourceforge.net/projects/xming/files/Xming/6.9.0.31/
http://sourceforge.net/projects/xming/files/Xming-fonts/7.5.0.34/