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 o
pció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,
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.
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 l
a 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
) los podeis dejar en los comentarios.
| < Anterior | Siguiente > |
|---|




