Ejecutar programas X en otra máquina viéndolos en local
A veces se necesita ejecutar un programa con interfaz gráfica que reside en una máquina distinta y queremos verlo en la máquina que estamos. Esta receta explica cómo conseguirlo sin tener que abrir una sesión X ni tener que utilizar un “escritorio remoto” como vnc.
Método 1: Exportar display
El método ‘clásico’ cuando queremos ejecutar un programa en una máquina remota y ver su interfaz en nuestro cliente X local es:
Con eso se consigue que el servidor X, que corre en nuestra máquina, acepte conexiones externas de la máquina “remoto”. Pero si queremos que admita conexiones de cualquier máquina hay que poner:
Aunque esto puede suponer un problema de seguridad grave.
Ahora accede a la máquina remota con telnet o algo similar y exporta el ‘display’ para aplicaciones X.
La instrucción export declara una variable de entorno de la shell (no tiene nada que ver con la expresión exportar display).
Con esto, la aplicación X sabrá que debe utilizar el servidor X de la máquina llamada ‘local’ en lugar de usar el de la máquina en la que se ejecuta. Puedes comprobar que funciona con algo como:
Con lo que deberías ver el clásico programilla de los ojos en la máquina local.
Método 2: ssh
El servidor ssh es capaz de gestionar automáticamente la conexión X siempre que servidor y cliente estén configurados adecuadamente.
Edita el fichero /etc/ssh/sshd_config del servidor y haz la siguiente modificación, que sirve para que el servidor ssh remoto devuelva el tráfico X11.
X11Forwarding = yes
Edita el fichero /etc/ssh/ssh_config del cliente y haz la siguiente modificación, Esto hace que el cliente ssh local solicite el tráfico X11.
ForwardX11 = yes
Como alternativa a esto, el usuario puede solicitarlo por línea de comando al hacer la conexión:
Si lo haces en las dos máquinas, podrás utilizar este mecanismo en ambos sentidos. Sólo queda reiniciar el servidor con:
Y ya tienes el efecto deseado, compruébalo con xeyes… (por ejemplo)