Ejecutar aplicaciones X remotas desde Windows

Como se sabe, Microsoft Windows no incluye un servidor de ventanas X como si lo hacen otros sistemas operativos como *BSD, Linux y Solaris. No es posible entonces servir local ni remotamente este tipo de aplicaciones. Por este motivo se hace necesario buscar una solución de terceros para que provea de un servidor X a Windows.

Las soluciones gratuitas/libres en este campo son bastante escasas. A mi mente vienen dos opciones:

  1. WiredX de JCraft, desarrollado en Java 2. WeirdX fue su versión para Java 1.1.
  2. Xming de Straight Running, para Windows nativo.

El servidor X de Xming no tiene ningún tipo de restricción o vencimiento -que ya haya visto- y por esto lo voy a utilizar para este ejemplo. De su sitio de descargas en SourceForge se descargan e instalan los siguientes paquetes:

  • Xming.
  • Xming Fonts.

Xming incluye una versión modificada de PuTTY (Xming Portable – PuTTY) que pude utilizar sin ningún problema, sin embargo no encontré como modificar la configuración del PuTTY integrado a mi antojo así que prefiero utilizar el PuTTY convencional, el mismo utilizado en los artículos anteriores.

El primer paso es establecer el tunel seguro hasta el servidor SSH. Para esto se utiliza al PuTTY de manera convencional con las siguientes modificaciones.

  1. Bajo la rama de configuración Connection > SSH, seleccionar la opción Enable compression.
  2. Verificar que el valor de Preferred SSH protocol version sea la 2.
  3. Bajo la rama Connection > SSH > X11, seleccionar la opción Enable X11 forwarding.

A continuación se debe iniciar el servidor X ejecutando el programa Programas > Xming. Su estado se puede verificar con un ícono de una X que aparece en la barra de tareas contíguo al reloj.

Para terminar ejecute algunas aplicaciones gráficas en el servidor a través de la conexión del PuTTY como xclock, gedit o yast2 dependiendo del software instalado en el servidor.

YaST bajo Windows ?  :-P
YaST bajo Windows ? 😛

Listo! Funciona a las mil maravillas y casí tan fácil como la versión de Linux. Me imagino que también requiere el mismo paso preparativo, el activar el envío del protocolo X a través del túnel. En pocas palabras.

# vi /etc/ssh/sshd_config

X11Forwarding yes

# service sshd restart

Tenga en cuenta que estas modificaciones requiere de acceso como root, de ahí a que el prompt esté representado por el #.

Conexión a un servidor SSH desde Linux: CLI y aplicaciones gráficas

Introducción.

Como todo el mundo sabe el protocolo SSH permite hacer lo mismo que el protocolo Telnet con una variación importante: de manera segura.  Supuestamente se debería utilizar siempre el primero en medios inseguros como Internet y el segundo en medios confiables como la LAN.  En mi opinión se debe utilizar siempre, Telnet, al igual que FTP, ya no existen para mi.

Pero con SSH se pueden hacer muchas otras cosas -seguras- además de sólo ejecutar aplicaciones de línea de comando (CLI), también es posible ejecutar aplicaciones gráficas mediante el procolo del sistema X Window.  Para hacer esto, antes utilizaba un método bastante problemático y largo.

Conexión – método antigüo.

El primer paso era abrir una conexión SSH normal con el servidor.

$ ssh usuario@servidor

En el servidor remoto, hacía apuntar a la variable DISPLAY hacia mi equipo local.  Siendo 192.168.1.100 la dirección IP de mi estación de trabajo.

$ export DISPLAY=192.168.1.100:0.0

Después, localmente en la estación de trabajo era necesario autorizar la recepción de información desde el servidor.

$ xhost + servidor

A partir de este momento los comandos ejecutados desde el shell remoto se mostrarán gráficamente en el servidor X de la estación de trabajo.

Si se presentaban problemas había que revisar los firewalls, tanto de entrada como de salida para garantizar que no se estuvieran filtrando los puertos requeridos por el protocolo.

Este método funciona tanto con SSH como con Telnet, pero su transmisión no se realiza de manera segura, así que no es ideal.

Conexión – método OpenSSH.

Gracías al servidor SSH de OpenSSH hay una segunda opción, mucho más fácil y mucho mas confiable porque la información transmitida si se encuentra encriptada.

En el servidor modifique el archivo /etc/ssh/sshd_config para que contenga la siguiente línea (sin comentario –#).

# vi /etc/ssh/sshd_config

X11Forwarding yes

Si hubo necesidad de actualizar el archivo mencionado para incluír el cambio, es necesario reiniciar el servicio SSH.

# service sshd restart

Desde la estación de trabajo realice la conexión SSH con el servidor de la siguiente manera.

$ ssh -X usuario@servidor

Listo!  Las aplicaciones que ejecute en el shell remoto se desplegarán gráficamente en el servidor Windows X de la estación de trabajo que inició la sesión de SSH.

Obviamente los pasos 1 y 2 sólo se deben ejecutar una única vez mientras se configura el sshd, así que para incluír las aplicaciones graficas con SSH, en realidad, sólo hay que agregar el modificador -X en la invocación del cliente.

Enlaces.