Yranac.es

Las cosas de Yranac

  • Aumentar el tamaño de la letra
  • Tamaño de letra predeterminado
  • Reducir el tamaño de la letra
Inicio Noticias Informática Túnel para conectar VNC por ssh

Túnel para conectar VNC por ssh

Correo electrónico Imprimir

Después de unos días de retraso por problemas técnicos por fin puedo publicar este artículo en el que trataré de explicar como hacer un tunel ssh para la transmisión de vnc, en este caso todo en Windows aunque debería de ser fácilmente adaptable a linux.

Para empezar vamos a explicar el objetivo: queremos conectarnos remotamente y a través de internet con otro equipo y poder ver el escritorio como si estuviesemos delante del ordenador que está en otro edificio, otra ciudad, otro país, etc. El ver el escritorio remotamente en Windows se hace facilmente a través de vnc. Vnc nos permite ver el escritorio del otro ordenador y utilizar nuestro teclado y ratón para controlar dicho ordenador. En una red local, con la instalación de un servidor vnc en el equipo remoto y un cliente en el nuestro sería suficiente, pero queremos hacerlo a través de internet y el problema que nos surge es que la información se transmite de forma totalmente plana, incluidas contraseñas y demás, con lo que resulta realmente peligroso enviar esta información a través de internet; en este punto entra en juego el ssh; ssh nos permite abrir una línea de comandos en otro equipo de forma segura y codificada, en windows como la línea de comandos no nos da, almenos fácilmente, el 100% de la funcionalidad, pretendemos poder utilizar el ssh para abrir un escritorio gráfico, haciendo lo que se llama un tunel

 

Para empezar instalamos en el equipo que queremos controlar remotamente el servidor vnc, para este tutorial voy a utilizar UltraVNC (lo podeis descargar desde la propia página) porque es gratuito y tiene muchas opciones de configuración, además tiene una oConfiguracion vncpción que me parece muy interesante que es el envío y recepción de archivos.

Una vez instalado (instalación típica Windows, siguiente, siguiente, etc) en la configuración del servidor puedes configurar algunas cosas las más interesantes me parecen:

- Query on incomming connection: permite decidir que, para poder conectarse, se habra una ventana en el servidor para que "autorice" la conexión.

- Authentication: podemos poner una contraseña para que haya que teclearla para conectarse.

Para poder hacer la conexión por ssh es muy importante que, en la opción "incoming Connections" seleccionemos "allow loopback Connections" (permitir conexiones en loopback) más adelante veremos por qué es obligatoria esta opción, por ahora adelantamos que esta opción permite que, al servidor, se pueda conectar desde el propio servidor.

Una vez instalado procedemos a instalar el servidor de ssh, en este caso vamos a utilizar freessh, de nuevo en este caso utilizo freessh porque es una herramienta gratuita para Windows y que podemos descargar de esta misma página.

El siguiente paso,configuracion ssh lógicamente, es instalar el servidor, en este caso de nuevo siguiente, siguiente, etc. Entramos en la configuración y comprobamos primero que esté corriendo el servidor ssh, en la imagen podemos ver que tiene una flecha verde indicando que el servidor está en marcha.

En la pestañita "Users" podremos configurar los usuarios que tienen derecho a iniciar sesión por ssh, y en la pestaña "tunneling" nos aseguramos de que está activo para que se puedan hacer los túneles.configuracion ssh

Una vez configurado todo esto hay que puntualizar una pequeña cosa, y es que, si tenemos firewall o incluso el firewall de Windows, habrá que asegurarse de que va a autorizar las conexiones tanto al puerto 22 del ssh como al 5900 de vnc o al puerto que pongais si preferiis que no sean los puertos por defecto.

En este punto teóricamente tenemos en nuestro servidor todo listo para poder realizar la conexión dentro de la red local, más adelante puntualizaremos algún problema que nos podemos encontrar para hacerlo por internet.

Una vez que el servidor está correctamente configurado para recibir las conexiones pasamos al equipo cliente, desde el que pretendemos gestionar el servidor.

Una vez en el cliente necesitaremos hacer dos cosas, en primer lugar establecer una conexion ssh con el servidor y luego hacer la conexión vnc para que se realice a través del tunel ssh.

Como cliente ssh podemos utilizar putty que no necesita instalación, lo abrimos y nos pedirá la ip a la que nos queremos conectar, en la sección "connection" ponemos el nombre de usuario de alguno de los que hemos autorizado anteriormente a conectarse y en luttya sección "tunnels" en "source port" ponemos un puerto local que se redigirá al remoto (por ejemplo 5901) y en "destination" le decimos que se va a conectar al puerto 5900 de la ip 127.0.0.1 es decir, ponemos 127.0.0.1:5900, de este modo le estamos diciendo que use el puerto 5900 de localhost pero en el servidor. por eso decíamos antes que el servidor vnc debe aceptar conexiones loopback.

Ahora nos abre una consola pidiendo la contraseña y tendremos una línea de comandos en el servidor.

Ahora con cualquier cliente vnc, como el propio UltraVNC nos conectamos, pero en lugar de conectarse a la ip del servidor los conecamos a 127.0.0.1:5901 es decir, nos conectamos desde el cliente al puerto 5901 del propio cliente. Con esto ya tenemos la conexión realizada si todo salió correctamente.

La explicación del proceso sería la siguiente; primero nos conectamos por ssh (con la consola) al servidor, y creamos el tunel que significa que el puerto 5901 de la máquina local será redirigido (y codificado) al puerto 5900 del servidor. Con el cliente nos conectamos al puerto 5901 de nuestra propia máquina para que se codifique y se envíe por ssh y en el servidor se descodifique y se envíe al puerto 5900 del propio servidor, es decir, al servidor vnc.

En una red local, sin demasiados problemas, podremos seguir estos pasos y hacer la conexión vnc a través de ssh. Pero el objetivo de este tutorial es hacerlo a través de internet, el problema en este caso es que, generalmente, tendremos que abrir el puerto 22, o que queramos en nuestro router y redirigirlo al puerto 22 de nuestro servidor. La forma de abrir estos puertos varía dependiendo del router por lo que hay que estudiar cada caso en particular, yo utilizo adslayuda.com donde hay manuales de cómo abrir puertos a muchos modelos de router y también hay información de la mayoría de ellos en internet.

Y el último problema que tendremos será saber la ip que tiene el servidor ya que no será la ip del servidor sino la ip pública de nuestro router, hay muchas páginas de internet que nos dicen en todo momento cúal es nuestra ip, en la propia adslayuda tenemos un enlace que nos la da, otra página en la que lo sabemos es cualesmiip.com o, en todo caso, google nos da muchas opciones.

Espero que este artículo excesivamente largo os sirva de algo y ya sabeis, las dudas (o los agradecimientos Smile) los podeis dejar en los comentarios.

Comentarios (7)
1 Viernes 14 de Agosto de 2009 10:42

Hay un programilla que es super fácil de usar y muy cómodo


Teamviewer, nos permite conectarnos a otro pc de una forma muy fácil


El servidor hace una instalación del programa (donde no hay que configurar nada)


el cliente se descarga un programa (que no hace falta instalar)


te dan el id y la contraseña (que se puede configurar para que sea siempre la misma)


conectar y listo


altamente recomendado

2 Viernes 14 de Agosto de 2009 18:02
Yranac

Muy buenas, que tal?


Un aporte interesante, gracias rapaz. Wink


De todos modos el objetivo de hacer esto es controlar el ssh para poder tunelar cualquier comunicación o cualquier servicio remotamente. El hacerlo con vnc es un ejemplo gráfico (nunca mejor dicho Wink)

3 Sábado 21 de Noviembre de 2009 10:30

&


he estado buscando información sobre este tipo de conexion y todo era de linux, me va abierto un poco los ojos encuanto al problema que tengo y me esta desquiciando.


POR CIERTO MUY BUENO EL ARTICULO


Mi problema es que active el firewall del servidor por error ( vamos lo de siempre, no clickees si no estas seguro, primero clickee y luego pense la has cagaooooooo). Ahora solo puedo acceder por el puerto 22 via putty pero como nunca use este tipo de conexiones y estoy perdido.


Me pasaron un comando para abrir el puerto del vnc pero el putty me da error desde su shell.


netsh firewall set opmode disable


netsh firewall add portopening tipo puerto nombre enable


(los pongo por ha alguien le puede venir bien)


¿como podria conectarme y abrir el puerto de mi escritorio remoto para deshabilitar el firewall?


solo tengo abierto el 22 que es el acceso de emergencia.


 


 

4 Sábado 21 de Noviembre de 2009 18:10
Yranac

Perdona pero no entiendo exactamente el problema, si puedes abrir un terminal con el putty ya debes de poder ejecutar comandos en la consola y por lo tanto también los comandos para manejar el firewall que comentas...


Podrías comentarnos los errores y a ver si averiguamos el origen...


 


Un saludo, y muchas gracias por pasarte por aquí

5 Lunes 23 de Noviembre de 2009 10:34

al inciar putty introduzco el comando en cuestion  y me dice unrecognitze comman


 


vamos al arrancar el putty desde


SAC>


pongo


SAC> netsh firewall set opmode disable


y me responde


unrecognitze command, Try help command for more detalls


 

6 Lunes 23 de Noviembre de 2009 15:29
Yranac

Buenas tardes, en principo el comando sería así, has probado a, en lugar de deshabilitaro, abrir el puerto 3389 (el del terminal server) para ver si te deja conectar...


Haré algunas pruebas y te comento si encuentro el problema, un saludo.

7 Martes 24 de Noviembre de 2009 12:12

si he intentado con la otra opcion de habilitar solo el puerto pero me dice lo mismo,

Agrega tu comentario

Tu nombre:
Tu dirección de correo:
Tu sitio web:
Título:
Comentario (puedes utilizar código HTML aquí):
  La palabra para verificación anti SPAM. Letras minúsculas sólamente y sin espacios.
Palabra de seguridad:
Última actualización el Jueves 23 de Julio de 2009 16:39  

Publicidad