Gestión remota con Ubuntu, ssh y x11vnc

Introducción

Poder gestionar una máquina de forma remota es algo que siempre me ha llamado la atención, y cuanto mas tiempo le dedico mas me sorprende todo lo que se puede hacer, y ya no me refiero únicamente a operaciones básicas como copiar archivos utilizando Nautilus y ssh, sino a instalar aplicaciones de forma remota en el huésped, configurarlo, etc.

Pero ¿que pasa si queremos ver lo que sucede en la pantalla de la máquina huésped?, podemos recurrir a VNC.

Gestión remota

Si estamos haciendo determinadas operaciones vía ssh, y queremos lanzar una VNC para ver lo que sucede en la pantalla de la máquina huesped, podemos recurrir a x11vnc. Para ello, una vez hemos entrado en la máquina huesped vía ssh, instalaremos x11vnc, como si estuvieramos en nuestra propia máquina:

sudo apt-get install x11vnc

Una vez realiza esta operación podemos arrancar el servidor vnc, mediante el siguiente comando:

x11vnc -display :0

El problema es que nos quedamos totalmente desprotegidos en la máquina huesped, dado que otro con acceso a la red podría acceder a esta máquina. Incluso si ponemos contraseña al servidor, seguimos desprotegidos, puesto que la información viaja sin codificar.

La solución a este problema pasa por conectarse vía ssh utilizando para ello el concepto de «tunneling ssh«.

De esta manera para conectarnos a una máquina remota, por ejemplo con IP 192.168.1.100, con un usuario denominado «miusuario», el comando a utilizar sería:

ssh -t -L 5900:localhost:5900 miusuario@192.168.1.100 'x11vnc -localhost -display :0'

Si además te encuentras fuera de la red, y esta tiene cortafuegos, primero tendrás que redireccionar el puerto hacia el equipo en cuestión, por ejemplo, pongamos que utilizas el puerto 22000, tendrías que redireccionar en el router de forma que el puerto 22000 te redireccione al IP 192.168.1.100 Puerto 22, que corresponde a la IP del ejemplo anterior y al puerto correspondiente a ssh.

Además necesitas conocer el IP del router, que lo puedes determinar utilizando el servicio www.whatismyip.com, aunque esto puede ser un problema si no hay nadie en el otro lado. Si en el router remoto tienes un IP dinámica es muy recomendable utilizar un servicio como DynDns, para resolver este problemilla. Suponiendo que la IP del router remoto es 80.30.50.100, y que has redireccionado el puerto 22000 del router al puerto 22 (ssh) de la máquina remota a la que quieres acceder (192.168.1.100), el comando a emplear en este caso sería:

ssh -t -p 22000 -L 5900:localhost:5900 miusuario@80.30.50.100 'x11vnc -localhost -display :0'

Por último sería interesante que además pusieramos una contraseña al servidor para evitar accesos no convenientes,por llamarlo de alguna manera.

Lanzar una aplicación gráfica en la máquina huesped

Si únicamente queremos lanzar una aplicación gráfica en la máquina huesped, por ejemplo, si quieramos lanzar «amule», la cosa sería algo así:

sh miusuario@192.168.1.100 'DISPLAY=:0 amule &'

Hombre, está claro que siempre podríamos iniciar el amule para la línea de comandos desde ssh, y punto, pero cuando lo vi en ask ubuntu, me pareció algo interesante para comentar, que nunca se sabe cuando necesitaremos las cosas.

Conclusiones

Creo que con solo la gestión remota a través de ssh ya tengo más que suficiente para realizar todas las
operaciones que normalmente hago, que hasta la fecha eran copiar y pegar, pero como me he ido aficionando a esto, ahora ya me dedico a la actualización de todos los equipos de forma remota y cosas de este estilo. Pero de cualquier manera, siempre que trabajamos con un equipo con interfaz gráfica es interesante ver lo que está sucediendo al otro lado.

Más información | e-ghost, Karl J. Runge, Ask Ubuntu

4 comentarios en “Gestión remota con Ubuntu, ssh y x11vnc

  1. Luciano Lagassa hace 11 años

    hola, muy bueno, creo que es un opción, yo recomiendo usar freenx o si no pueden usen teamviewer for linux. gracias

  2. Andriu hace 11 años

    Muy buen artículo, aunque no entiendo bien lo de quedarse desprotegido, si estas conectado por ssh no deberian ir todos los comandos que ejecutes a traves de este protocolo?

    Un saludo 😉

  3. Manuel Castro Caamaño hace 11 años

    ¿Has probado a iniciar la sesión ssh con -X ? con este modo puedes luego iniciar aplicaciones en el equipo remoto pero que se visualizarían en tu máquina local.

    Saludos.

  4. emil_cedeno hace 9 años

    como lo puedo levantar como servicio en ubuntu studio para que se inicie al inicar la pc

Deja una respuesta

Tu dirección de correo electrónico no será publicada.