jueves, 7 de mayo de 2009

SSH Inverso + VNC en Linux y en Windows

Bueno, luego de leer muchisima informacion alrededor de la red (gracias por compartirla) paso a detallar como realizar conexiones SSH inversas con puerto de escucha para VNC, lo que se traduciria como conectarse VNC encriptado a cualquier maquina.

Vamos a tener involucradas 3 maquinas (ver otro post SSH Inverso para comprender el como y porque de cada maquina)

pc1 > maquina donde estoy sentado y quiero realizar la conexion ssh a otra pc.
pc2 > maquina a la cual quiero acceder via ssh (y no tiene salida web a ssh)
pc3 > maquina que tiene acceso via ssh desde la web port 5901

Primera explicacion: Como hacerlo entre maquinas LINUX

PC a la que nos vamos a conectar (pc2)

#1 Activamos un servidor VNC corriendo en el puerto 5901, para ello en una terminal:

$ vnc4server :01


donde :01 hara que se ejecute VNC en el puerto 5901

nota: yo en el ejemplo utilizo vnc4serverque se encuentra en los repositorios de ubuntu, pero se podria usar cualquier Server VNC


#2 Creamos la conexion SSH Inversa con la pc que tiene salida directa a internet (Proxy)

$ ssh -X -C -R 5901:localhost:5901 user@ipPC3

donde -X permite la ejecucion de aplicaciones a modo grafico
-C habilita la compresion de paquetes (mejora rendimiento)
-R crea la conexion SSH INVERSA

Listo, ya tenemos el servidor VNC corriendo a travez de un tunel inverso conectado a un proxy que tiene abierto los puertos 5901

PC desde la que nos conectaremos (PC1)

#1 Conectaremos una sesion SSH en modo LISTEN en el proxy, en una terminal:

$ ssh -X -C -L 5901:localhost:5901 user@ip(PC3)
donde -L habilita el modo Listen (escucha) SSH en el proxy

#2 Conectamos con nuestro cliente VNC, en la misma terminal donde ejecutamos anteriormente, cuando ya estemos dentro del proxy colocamos:

$ vncviewer:5901
Listo, ya vamos a estar viendo la pantalla remota de la pc2 en nuestra PC.


Segunda explicacion: Como hacerlo entre maquinas WINDOWS

Para ello vamos a necesitar los siguientes programas:

Plink : programa que nos permite ejecutar comandos SSH en consola CMD

UltraVNC : VNCserver y VNCviewer para windows

PC a la que nos vamos a conectar (pc2)

Como lo hacemos?
1# Instalamos UltraVNC y una vez que el server este corriendo, configuramos para que conecte con el puerto 5901

2# Establecemos conexion SSH Inversa desde CMD con plink.

entramos a la carpeta donde se encuentra Plink (ej. C:>/escritorio/) y en consola colocamos:

plink -X -C -R 5901:localhost:5901 user@ipPC3

Ya tenemos la conexion VNC a travez de SSH Inverso al proxy

PC desde la que nos conectaremos
(PC1)

#1 Entramos a la carpeta donde se encuentra Plink (ej. C:>/escritorio/) y en consola colocamos:

plink -X -C -L 5901:localhost:5901 user@ipPC3

#2 Ejecutamos VNCviewer, y cuando nos pide el host colocamos:

localhost:5901
Listo

Nota: sepase que no me gusta Windows para nada, pero aquellos usuarios de Windows que osaron despotricar contra Linux muchas veces, no podrian estar haciendo nada de esto sin las herramientas y los conocimientos compartidos por la comunidad GNU/Linux

Ojala les sea util, recuerden si hacen Copy-Paste de este post que he creado, citen la fuente

Toda la informacion aqui publicada tiene licencia GPLv2