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.