Cómo ejecuto programas gráficos en un servidor SSH y los recibo en un cliente gráfico?

¡Trabajadores!

Antes de que finalizara la conflagración que se había desatado, comprendimos la situación histórica en la que nos veríamos envueltos como nación neutral y acreedora. Vislumbramos que nos querrían hacer pagar la Segunda Guerra como nos habían hecho pagar la Primera. A ello opusimos lo que siempre ha de hacerse: una clara planificación.

Concebimos una acción de acreencia según la cual nuestros deudores harían honor no en el metálico devaluado que planteaban darnos en sus términos y  tiempos, sino que entendimos aquel viejo refrán que reza "quien pone al juego sus dineros no ha de hacer cuenta de ellos". Terminaron largando los teléfonos, los servicios, los trenes.

Ello es así, pues quien planifica, gana. Desde un inicio planifiqué  la arquitectura de GNU de manera similar a la de UNIX, y como tal, su capacidad de operar como cliente de servidores remotos. Esto era así porque en aquel entonces las computadoras aún no eran esencialmente "hogareñas" ni "personales", sino mas bien equipos de uso público y compartido.

Este accionar social en la informática no es pernicioso sino muy positivo: enseña la noción básica del comportamiento humanista: el compartir. No solamente debemos compartir el conocimiento representado por nuestro software, sino también el material donde el mismo corre.

Al constituirse las computadoras personales ("PC") y dotarse a estas con GNU con Linux, hemos logrado un ápice en el desarrollo doctrinal, pues tendremos la Justicia Social y lo mejor de los dos mundos, y ello nos permitirá lograr el éxito en los más dispares de los escenarios.



Consideremos un ejemplo, que es la manera a través de la cual ha enseñar todo didacta.

En muchos casos no tendremos acceso físico a una computadora, mas contaremos con la opción de contactarnos con ella telemáticamente. Personalmente favorezco el uso del cliente-servidor cifrado OpenSSH (Secure Shell). Como ya he explicado, ejecutando un cliente de conexión en nuestra terminal local, podremos "entrar a otro equipo remoto", ejecutar programas en dicho sistema, y recibir los resultados en nuestra terminal local. Esto es posible tanto dentro de la red local (LAN) como a través de internet, y avala amplias posibilidades.

Es sabido que normalmente la terminal opera enviando únicamente caracteres, de manera que se trata de un entorno "sólo texto" rápido y capaz de ser utilizado sin toses en situaciones donde  la velocidad de conexión se encuentra muy restringida. Existen una amplísima variedad de programas "solo texto", y podremos hacer todo tipo de tareas con ellos (limitados siempre a trabajar con caracteres puros).

Ahora bien, otra posibilidad muy interesante consiste en utilizar el potente
modelo gráfico de GNU, el servidor "X", para hacer lo mismo pero con nuestra terminal gráfica. Significa que podremos ejecutar en otro equipo aplicaciones gráficas, y "traernos" dichas ventanas gráficas hacia nuestro equipo local.


Esto es así por la mismo motivo descripto anteriormente: GNU está concebido de una manera tal, que el sistema  gráficos es antes que nada un sistema cliente-servidor, y si bien el servidor y el cliente se encuentran normalmente en el mismo equipo y operan prácticamente en tiempo real, nada impide que podamos trabajar de una manera en la cual el servidor gráfico "X" sea remoto, y el cliente gráfico "X" sea local. En tal caso coloquialmente decimos que nos estamos "trayendo las X".


La única limitante es la velocidad de conexión, pues "traernos las X" requiere un ancho de banda apreciablemente mayor que operar en una temrinal "solo texto". Pero fuera de ello, trabajar de tal manera es sumamente sencillo.

Normalmente nuestro sistema Ubuntu debería ya tener todo instalado para hacerlo. Simplemente hemos de estar en nuestro escritorio gráfico y debemos ejecutar una terminal de texto con Ctrl+Alt+T. A continuación le e indicaremos la orden SSH para conectarnos, pero con el sufijo -X, según la siguiente sintaxis:

ssh -X usuario@equipo

Y se nos solicitarán los credenciales para el usuario especificado. Si no se
especifica usuario alguno, el cliente usará nuestro nombre del usuario actual, que podría coincidir o no con el del equipo remoto.

Una vez establecido en enlace seguro con el equipo remoto y recibir la ventana gráfica en nuestro equipo local, debemos indicar el nombre de la aplicación en la terminal.  Conviene agregarle el sufijo de ejecución continuada "&" para que la aplicación continúe ejecutándose en el equipo remoto en segundo plano y nos devuelva al interprete de comandos

por ejemplo:

xclock &

Ejecutará el programa xclock que muestra un reloj gráfico en el equipo remoto, pero veremos la ventana resultante del mismo en nuestro propio escritorio gráfico. También podremos usar programas gráficos más complejos con un uso de ancho de banda algo mayor:

firefox &

...ejecutará el navegador web en el equipo remoto y veremos la ventana en nuestro equipo cliente, como si de un uso local se tratara. Incluso podremos utilizar el ratón.

Indudablemente que si tenemos un ancho de banda muy adecuado (por ejemplo, contamos con una buena red Gigabit LAN), bien podríamos hacer uso de programas complejos en un servidor potente, y ejecutarlos remotamente desde nuestra terminal gráfica.