Cuando trabajas con una Raspberry Pi, es posible que en ocasiones necesites ejecutar aplicaciones gráficas de forma remota, es decir, desde una máquina diferente a la que corre el software.
En estos casos, lo no normal es que empleemos algún tipo de escritorio remoto como VNC. Sin embargo en determinadas ocasiones en las que no vamos a poder conectar mediante un escritorio remoto completo. Por ejemplo por no tener permisos o no querer instalar software adicional en la máquina.
En estos casos, X11 port forwarding puede ser una alternativa interesante para redirigir las interfaces gráficas de tus aplicaciones hacia tu dispositivo local, permitiéndote trabajar con ellas como si estuvieran ejecutándose localmente.
Qué es X11 Port Forwarding
X11 port forwarding es una técnica que permite redirigir la interfaz gráfica de aplicaciones que se ejecutan en un servidor remoto hacia un cliente local. Utiliza el sistema de ventanas X (X Window System o X11) para mostrar la interfaz gráfica de las aplicaciones en una máquina remota.
X11 port forwarding mediante SSH (Secure Shell) permite redirigir las conexiones X11 a través de un túnel SSH seguro. Es comúnmente utilizado para ejecutar aplicaciones gráficas desde servidores remotos en sistemas Unix y Linux.
Requisitos Previos
Antes de comenzar, asegúrate de que:
- Raspberry Pi tenga instalado y configurado un servidor X11.
- Cliente SSH (como
OpenSSH
) esté instalado en tu máquina local y en la Raspberry Pi. - X Server (como
XQuartz
en macOS oXming
en Windows) esté instalado en tu máquina local si estás utilizando un sistema operativo que no incluye un servidor X11 por defecto.
Configuración de X11 Port Forwarding
Primero, nos aseguramos de que el servidor SSH en nuestra Raspberry Pi esté configurado para permitir el reenvío X11. Verificamos y modificamos esta configuración en el archivo de configuración de SSH (/etc/ssh/sshd_config
).
Abrimos el archivo de configuración de SSH con el siguiente comando:
sudo nano /etc/ssh/sshd_config
Nos aseguramos de que las siguientes líneas no estén comentadas y estén configuradas correctamente:
X11Forwarding yes
X11DisplayOffset 10
Finalmente, guardamos los cambios y reiniciamos el servicio SSH para aplicar la nueva configuración con:
sudo systemctl restart ssh
Ejecutar aplicaciones gráficas
Por otro lado la máquina cliente debe ejecutar una aplicación de SSH que sea compatible con X11 Port Forwarding. La mayoría de los que hemos visto, como Putty, mRemoteNG y MobaXTerm son todos compatibles.
Por ejemplo, en el caso de Putty, es una opción que debemos marcar en Connectión/SSH/X11.
Una vez conectado, puedes ejecutar aplicaciones gráficas desde la línea de comandos de tu Raspberry Pi, y sus interfaces aparecerán en tu máquina local. Para probar el X11 Port Forwarding podéis ejecutar cualquier aplicación que tenga interface gráfica.
O, si queréis hacer una prueba, ejecutar las App de X11.
sudo apt install x11-apps
Y, a continuación,
xclock &