viernes, 2 de septiembre de 2011

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:
1
sudo apt-get install x11vnc
Una vez realiza esta operación podemos arrancar el servidor vnc, mediante el siguiente comando:
1
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:


1
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:
1
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í:
1
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

Fuente;http://www.atareao.es/ubuntu/conociendo-ubuntu/gestion-remota-con-ubuntu-ssh-y-x11vnc/

No hay comentarios:

Publicar un comentario