SSH (parte IV): Ejecutar aplicaciones gráficas de forma remota desde otro equipo con Ubuntu 16.04 LTS

En los tres artículos anteriores de esta serie, hemos aprendido:

Sin embargo, en los tres artículos nos hemos referido al acceso en modo terminal (o línea de comandos, según la terminología de Microsoft) y, a estas alturas, probablemente te estarías preguntando si no sería posible acceder también a las aplicaciones gráficas.

Afortunadamente, la respuesta es afirmativa y hoy te vamos a mostrar lo sencillo que resulta conseguirlo desde un ordenador que esté ejecutando Ubuntu 16.04 LTS.

Igual que en los artículos anteriores, el ordenador al que accedemos ejecuta Ubuntu Mate 16.04 LTS, para que puedas seguir aplicando lo que aprendas al uso de tu Raspverry Pi, pero es importante que tengas en cuenta que funciona de forma similar con cualquier otro sabor de Ubuntu y con la mayoría de las distribuciones GNU/Linux.

Por otro lado, los cambios que vamos a realizar los puedes aplicar de forma local en el equipo que luego será accedido remotamente, pero como ya podemos acceder mediante SSH, las modificaciones de hoy también las haremos de forma remota.

Por lo tanto, comenzaremos por abrir una nueva ventana de terminal (por ejemplo, usando la combinación de teclas Alt + Ctrl + T), y nos conectaremos al equipo remoto como ya hemos aprendido:

ssh -p 5000 usuario@192.168.1.10

Si tienes dudas sobre la sintaxis, recuerda que ya la explicamos en el artículo SSH (parte II): Acceder desde otro equipo con Ubuntu 16.04 LTS.

1

Usaremos la contraseña que corresponda con la cuenta a la que nos estamos conectando en el equipo remoto

A continuación, tendremos que cambiar la configuración de OpenSSH, algo que conseguimos modificando el archivo /etc/ssh/sshd_config, por ejemplo, con el siguiente comando:

sudo nano /etc/ssh/sshd_config
Estamos dando por sentado que el editor nano se encuentra instalado en el equipo remoto. Si no fuese así, puedes optar por instalarlo o utilizar un editor diferente

Como estamos realizando una tarea administrativa, deberemos volver a escribir la contraseña de la cuenta remota. Lógicamente, estamos dando por hecho que la cuenta que usamos es de tipo Administrador (por ejemplo, la que se crea durante la instalación del sistema).

2

Escribimos la contraseña y pulsamos la tecla Intro.

Una vez que se muestre el contenido del archivo deberemos buscar un par de líneas que comienzan por X11 y asegurarnos de que tienen el siguiente contenido:

X11Forwarding yes
X11DisplayOffset 10

Si no es así,deberás realizar las modificaciones necesarias.

3

Puedes localizar las líneas usando la combinación de teclas Ctrl + W> para hacer una búsqueda en el archivo.

Además, añadiremos una línea por delante, para indicar que está permitido el reenvío de claves para la autenticación. Su sintaxis será:

AllowAgentForwarding yes

Y, por debajo, añadiremos otra línea para autorizar el reenvío de la salida gráfica, con una línea como esta:

X11UseLocalhost yes

En ambos casos, el valor predeterminado suele ser yes, por lo que podríamos ahorrarnos los cambios, pero así nos aseguramos de que su valor sea el correcto en todos los sistemas.

En definitiva, el aspecto final de las cuatro líneas quedará como sigue:

AllowAgentForwarding yes
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

4

Ya sólo nos queda salir, por ejemplo, usando la combinación de teclas Ctrl + X.

El editor nos preguntará si queremos guardar los cambios.

5

A lo que debemos contestar pulsando la tecla S.

Y por último, nos pide el nombre que queremos darle al archivo, por si no queremos sobrescribir el original.

6

En nuestro caso, pulsamos la tecla Intro para mantener el nombre actual.

Al salir del editor, sólo nos quedará reiniciar el servicio para que empiece a realizar su trabajo. Para lograrlo, usamos el siguiente comando:

sudo systemctl restart ssh

7

Reiniciamos el servicio.

Y por último, salimos de la terminal remota:

exit

8

Escribimos la orden y pulsamos la tecla Intro.

Para comprobar que todo funciona, basta con volver a conectarnos al equipo remoto, aunque esta vez, usaremos también el argumento -X para habilitar el reenvío de la salida gráfica. Es decir, escribiremos algo como esto:

ssh -p 5000 -X usuario@192.168.1.114

9

Y de nuevo la contraseña de la cuenta remota que estamos utilizando.

Cuando obtengamos de nuevo el prompt de la terminal remota, ya podemos ejecutar cualquier programa que disponga de interfaz gráfica.

En mi caso, aprovechando que el editor de textos predeterminado que utiliza Ubuntu Mate (llamado pluma) es diferente del que usa la distribución estándar de Ubuntu (que es gEdit), voy a comprobar que se ejecuta sin problemas. Así, se verá claramente que se está ejecutando el editor remoto, en lugar del local.

Por lo tanto, en la terminal escribimos el nombre del programa:

pluma

10

Escribimos el nombre del programa y pulsamos la tecla Intro.

Verás que, de inmediato, se abre una nueva ventana con el editor remoto ejecutándose en su interior. Ahora, podrías editar de forma gráfica cualquier archivo del ordenador remoto y, al guardarlo, lo guardarías allí.

11

Ventana del editor del equipo remoto en el ordenador local.

También puedes iniciar sesión de forma remota y ejecutar un programa de forma inmediata. Para lograrlo, basta con escribir el comando ssh, tal y como hemos visto más arriba, seguido del nombre del programa que queremos ejecutar. Por ejemplo:

ssh -p 5000 -X usuario@192.168.1.114 pluma

En este caso, después de pedirnos la contraseña de la cuenta, el sistema iniciará inmediatamente la ejecución del editor de textos.

Como te puedes imaginar, esto nos abre todo un abanico de posibilidades. Estoy seguro de que, alguna de ellas, ya empieza a dar vueltas en tu cabeza.

Espero que el artículo de hoy te haya resultado interesante.

Todos los artículos de la serie…

  1. SSH (parte I): Administrar Ubuntu desde un equipo diferente.
  2. SSH (parte II): Acceder desde otro equipo con Ubuntu 16.04 LTS.
  3. SSH (parte III): Acceder desde otro equipo con Windows 10.
  4. SSH (parte IV): Ejecutar aplicaciones gráficas de forma remota desde otro equipo con Ubuntu 16.04 LTS.
  5. SSH (parte V): Ejecutar aplicaciones remotas mediante un script de Ubuntu.
  6. SSH (parte VI): Ejecutar aplicaciones gráficas de forma remota desde otro equipo con Windows 10.
  7. SSH (parteVII): Asegurar las conexiones xRDP entre Ubuntu Mate 16.04 y Windows 10.