jueves, diciembre 08, 2011

Ejecutar aplicaciones X-Windows en Microsoft Windows sobre SSH hacia GNU Linux

Ejecutar aplicaciones X-Windows en Microsoft Windows sobre SSH hacia GNU Linux


Para cualquier administrador de servidores GNU Linux, hacer administración remota vía SSH es básico para poder controlar de manera remota un servidor. El método más común para esto es usando un servidor SSH y un cliente SSH.

SSH en modo básico permite tener una terminal de comandos remota desde la cual se puede ejecutar cualquier orden (comando, o programa) en el servidor siempre y cuando no se requiera de modo gráfico (X-Windows).

Por ejemplo (de Linux a Linux) para conectarse como el usuario denis en el computador servidor.local se puede hacer:

denis@tamagastad:~$ ssh denis@servidor.local
denis@tamagastad's password:
Welcome to Ubuntu!
Last login: Sat Oct 29 19:30:32 2011
denis@servidor.local:~$

Pero si se requiere lanzar una aplicación en modo gráfico, por ejemplo gedit, se obtendrá un error como este:

denis@servidor.local:~$ gedit

(gedit:25468): Gtk-WARNING **: cannot open display:

Pero si del lado de nuestro cliente SSH ya tenemos un servidor X.Windows corriendo en nuestro Linux (nota: si ya tenemos Gnome o KDE, significa que ya tenemos un servidor X-Windows funcionando) al momento de realizar la conexión SSH con el servidor se puede habilitar X11 forwarding mediante el parámetro -X.

denis@tamagastad:~$ ssh -X denis@servidor.local

Y esto permitirá que se ejecute cualquier aplicación gráfica en el servidor, usando nuestro entorno gráfico local, se puede agregar al final de la invocación del programa un & para que la consola no quede capturada:

denis@servidor.local:~$ gedit &

Ok, todo esto muy bien, pero funciona de Linux a Linux, ¿qué hacer cuando queremos que un usuario con Microsoft Windows ejecute una aplicación con entorno gráfico en el servidor linux? Un cliente SSH no basta, ya que sólo permite acceso a aplicaciones de consola o terminal.

Para esto es necesario instalar un servidor X-Windows en Microsoft Windows y establecer una conexión SSH con X11 forwarding. De esta manera se puede usar MS Windows como una terminal tonta que sólo se encarga de la presentación de las aplicaciones que se ejecutan en un servidor Linux.

Xming es un Servidor X para Microsoft XP/2008/Windows7, yo bajé "Xming-6-9-0-31-setup.exe" gratis de la web oficial de Xming en:

http://www.straightrunning.com/XmingNotes/

PuTTY es un conjunto de programas que permiten entre otras cosas acceder por SSH desde Microsoft Windows a un servidor SSH, he bajado "putty.zip" de la web oficial de PuTTY en:

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html


Proceder a instalar Xming:


Lanzar la aplicación:

O usar el menú Inicio > Todos los Programas > Xming > Xming y se observará en la barra de tareas un icono que dice Xming Server:0.0

Luego descomprimir putty.zip y ejecutar PUTTY.EXE, antes de realizar la conexión SSH con el servidor, asegurarse de habilitar en putty el redireccionamiento del X11, en el árbol de configuración de la parte izquierda Connection > SSH > X11:



Seleccionar la opción Enable X11 forwarding, y en el cuadro de texto X display location escribir localhost:0 el cual corresponde con la dirección del servidor X Windows XMing recién instalado en MS Windows.

Luego en el árbol de configuración, en la opciones Session es posible establecer una conexión SSH especificando el IP o el nombre de dominio del servidor junto a su puerto.



Putty pregunta el usuario y contraseña:



Si nos conectamos bien, desde la consola de putty es posible ejecutar programas como:

nautilus &
gedit &
evice &

O cualquier programa con interfaz gráfica y el X Server de Windows mostrará esa interfaz usando como Windows Manager el entorno de MS Windows.

12 comentarios:

  1. Muchas gracias por la informacion, me ha sido de gran utilidad.

    ResponderEliminar
  2. Gracias, muy útil.

    ResponderEliminar
  3. Muchas gracias por la informacion, muy util e interesante lo que se puede lograr

    ResponderEliminar
  4. Oye podrias explicar como configurar windows para hacer de servidor x11?
    Llevo un par de dias probando con cygwin, openssh y tal pero cada tutorial me falla por algun lado.

    gracias por el tutorial

    ResponderEliminar
  5. Hola

    Xming es un Servidor X para Microsoft Windows, basta con bajarlo e instalarlo siguiendo la secuencia simple de instalación. Al instalar Xming ya tienes un servidor X en Windows.

    Ahora si deseas hacer experimentos a la inversa, desde Linux conectarte a un Windows, podrías probar instalar un servidor VNC en Windows y luego instalar un cliente VNC en Linux.

    Saludos

    ResponderEliminar
  6. Hola esta información me ha sido mucha utilidad, solo tengo una duda sobre el porque a localhost se le pone el número 0 ¿seria muy diferente el poner localhost:1 o algún otro número en vez de localhost:0? me gustaría saber mas sobre eso, gracias.

    ResponderEliminar
  7. Hola

    http://www.x.org/archive/X11R6.8.1/doc/X.7.html#sect4

    El tema se explica en la ayuda del X:

    From the user's perspective, every X server has a display name of the form:

    hostname:displaynumber.screennumber

    This information is used by the application to determine how it should connect to the server and which screen it should use by default (on displays with multiple monitors):

    hostname
    The hostname specifies the name of the machine to which the display is physically connected. If the hostname is not given, the most efficient way of communicating to a server on the same machine will be used.
    displaynumber
    The phrase "display" is usually used to refer to collection of monitors that share a common keyboard and pointer (mouse, tablet, etc.). Most workstations tend to only have one keyboard, and therefore, only one display. Larger, multi-user systems, however, frequently have several displays so that more than one person can be doing graphics work at once. To avoid confusion, each display on a machine is assigned a display number (beginning at 0) when the X server for that display is started. The display number must always be given in a display name.
    screennumber
    Some displays share a single keyboard and pointer among two or more monitors. Since each monitor has its own set of windows, each screen is assigned a screen number (beginning at 0) when the X server for that display is started. If the screen number is not given, screen 0 will be used.

    Saludos

    ResponderEliminar
  8. ¿Y Xming es un emulador del servidor X en windows? ¿Que función realiza? o qie clase de software es?

    ResponderEliminar
  9. Hola, en mi caso es al contrario y me preguntaba si se podia hacer. Tengo un servidor ssh en una maquina windows, donde tengo instalado el utorrent. Me conecto por ssh con el cliente putty desde otra maquina con lubuntu. Desde esta maquina abro una conexion ssh con el servidor, para arrancar el utorrent, pero solo me abre el proceso y no la interfaz grafica. Tengo que instalar un servidor X en lubuntu?? Tambien me aparece el error X11 forwarding request failed on channel 0. Es posible hacer lo que yo quiero?
    Saludos

    ResponderEliminar