Conexión remota por VNC inverso


nullSeguro que en mas de una ocasión os ha llamado algún conocido o familiar para que le solucionéis algún problema con su querido ordenador.

Al grito de «como tu entiendes de ordenadores» cualquier excusa es buena para hacerte ir a su casa a solucionar lo que en ese momento quiera que le pase al equipo [ y es que leer en Internet soluciones a problemas no entra dentro de sus habilidades técnicas 😦 ]

Para evitar desplazamientos innecesarios que te hacen perder más tiempo del que necesitas para solucionar el fallo quiero explicaros cómo usar VNC para conectar remotamente al equipo, siempre y cuando le funcione la conexión a Internet 😉

¿Por qué conexión inversa?

Debido a firewalls y routers no nos queda mas remedio que abrir algunos puertos para poder establecer la conexión entre los equipos y, partiendo de la base que la persona a la que vamos a ayudar anda corta de recursos, dudo que sepa cómo hacerlo.

La idea de la conexión inversa por VNC (o reverse VNC connection) es que el puerto que se abra sea el de nuestro router (port forwarding) evitando molestias (y explicaciones innecesarias) a nuestro «cliente» (permitidme que a partir de ahora llame así a la persona que vamos a ayudar remotamente).

Instalación en casa del «cliente»

Lo único que tenemos que pedir al «cliente» es que ejecute en su terminal (supondremos que sabe copiar y pegar y puede abrir una terminal… en caso contrario, te vas a tener que dar un paseo a su casa y, ya que estás allí se lo instalas para no tener que volver)

sudo apt-get install x11vnc

Configuración en nuestra casa

Lo primero que tenemos que hacer es habilitar alguno de los puertos habituales de VNC (5500, 5800 y 5900, aunque podría ser el que te diese la gana) en nuestro router y apuntar (gracias a las reglas NAT del router) a nuestro ordenador.

Esta operación depende del router que tengas así que lo mejor será que te indique una web donde consultar (en perfecto inglés) cómo hacerlo en tu aparato concreto.

Nos preparamos para atender al «cliente»

La configuración anterior sólo tendremos que hacerla una vez (con suerte e ip fija), si tuviésemos ip dinámica (dhcp) lo mismo te va a tocar hacerlo n-cientas veces; tampoco hay que exagerar: los routers suelen traer la posibilidad de configurar el port forwarding en base a la MAC del equipo evitando de ese modo el problema del dhcp. Como la solución depende del router que tengas dejaré su estudio a la curiosidad del lector y a un posible artículo posterior para no extendernos más de lo que ya lo hemos hecho.

Antes de poder atender al «cliente» deberás ejecutar en tu equipo un

vncviewer -listen

y con esto ya tendremos nuestro ordenador esperando la conexión del cliente en el puerto 5500; si el puerto que abriste en el router en el paso anterior es, por ejemplo el 7089 deberás ejecutar

vncviewer -listen 7089

Que comience el espectáculo

Ahora que ya tenemos abierto el puerto y vnc listo para recibir conexiones debemos indicar al «cliente» que ejecute un

x11vnc -connect TU_IP_EXTERNA:5500

donde

  • TU_IP_EXTERNA es la dirección IP de tu ordenador; puedes obtenerla siguiendo las instrucciones que dimos en su momento para obtener la ip externa (en la página que hemos recomendado para el port forwarding también te la muestra)
  • 5500 es el puerto que hemos abierto en el router; si has puesto otro como 7089 ya sabes que debes cambiarlo

Una vez que el «cliente» ejecute esa instrucción automáticamente aparecerá su escritorio en nuestro ordenador y éste flipará viendo cómo le movemos el ratón y comenzamos a abrir ventanas remotamente 🙂

Resumiendo

Aunque pueda parecer excesivamente complejo (por la longitud del artículo), el proceso queda reducido a:

  1. Abrir puerto en nuestro router (una sola vez y queda para toda la vida)
  2. Ejecutar en nuestro equipo un vncviewer -listen
  3. Instalar (sólo la primera vez) en casa del cliente x11vnc (ejecutando sudo apt-get install x11vnc)
  4. Pedir al cliente que lance un x11vnc -connect TU_IP_EXTERNA:5500

El paso más complicado va a ser, con total seguridad, conseguir abrir el puerto en el router pero recuerda que con las instrucciones que aparecen en la web de port forward y la herramienta que recomendamos utilizar para comprobrar puertos abiertos tendrás más que suficiente para conseguirlo. Si aun así tuvieses problemas ya sabes dónde encontrarme 😉

35 comentarios en “Conexión remota por VNC inverso

  1. Hola, buenísimo este artículo, creo que es uno de los mejores que he visto y como siempre, todo tan fácil en Ubuntu, gracias a gente como tú.

    Una pequeña observación sería, si el cliente usa «el ventanucos» como sería.

    Imagino que algo más complicado o quizás con freenx-server y su respectivo cliente nxclient (para windows) solucionamos la conexión??

    Me gusta

  2. Gracias Paco, me alegra que te haya gustado el post.

    Respecto a la conexión con clientes que usan el «ventanuco» lo he resuelto utilizando tightVNC.

    No he escrito ningún artículo al respecto porque no cuento con «ventanucos» para hacer las pruebas necesarias pero cuando tuve la oportunidad lo monté sin problemas y, cosa extraña, funcionó a la primera 😉

    Me gusta

  3. Yo tengo un ordenador con Ubuntu dentro de una red local al que puedo acceder por ssh desde un servidor conectado a Internet desde el cual también he accedido por ssh. Es decir, primero hago ssh a un ordenador y luego desde ahí hago ssh a otro ordenador.

    ¿Se puede lanzar x11vnc –connect ip:port en esta situación, teniendo vncviewer -listen desde el ordenador que estoy?

    Me gusta

  4. El servidor es mio y puedo tener los permisos que hagan falta.

    Se trata de un servidor ubuntu que conectado a un router monpuesto punto a punto. A partir de este servidor entro a toda la red local del Instituto.

    Lo que pretendo es administrar con vnc el escritorio de los equipos de la red local desde Internet.

    Me gusta

  5. Desde la red local accedo con ssh -X y puedo ejecutar aplicaciones gráficas, pero ya no es así desde fuera ya qua hago doble ssh y el servidor no tiene entorno gráfico.

    Quisiera poder controlar el entorno de ventanas para mayor comodidad, pero no lo consigo.

    Me gusta

  6. Hola jasvasquez.
    Actualmente manejo un servidor con ssh que me funcionaria de las mil maravillas si no tuviera que utilizar gnome para configurar dos impresoras y un scaner que tengo en mi red. He instalado gnome, x11vnc y xorg, pero no he logrado hacer que tightVNC funcione. El error el el servidor es
    wait_for_client: got client
    wait_for_client: running: env X11VNC_SKIP_DISPLAY=» /bin/sh /tmp/x11vnc-find_display.8Ubpah
    wait_for_client: find display cmd failed
    wait_for_client: FINDCREATEDISPLAY cmd: /bin/sh /tmp/x11vnc-find_display.8Ubpah Xvfb
    trying N=20 …
    wait_for_client: read failed: /bin/sh /tmp/x11vnc-find_display.8Ubpah Xvfb
    fgets: Bad file descriptor
    Espero me puedas ayudar. (aunque el post sea viejo es util)

    Me gusta

  7. Lo logre! Siguiendo el mismo tutorial busque mas abajo hasta llegar a Accessing a family PC over the Internet, corri sudo x11vnc -safer -localhost -nopw -once -auth /var/lib/gdm/:0.Xauth -display :0 en PuTTy y luego hice un forward según las instrucciones y voila!

    Gracias de todos modos!

    Me gusta

        1. Lamentablemente así es. En mi pais no se acostumbran a los cambios. Pero yo he tenido la oportunidad de probarlo todo (lease Mac, Window$ desde 3.11, y Linux).

          Me gusta

  8. hola a todos, estupendo tutorial, pero tengo una pequeña consulta, soy profesor de informatica de una escuela normal superior en pamplona colombia. todas las maquinas de mi aula usan ubuntu 9.10 y aplique el contenido del tutorial para poder mostrarle en cualquier momento a mis estudiantes lo que estoy haciendo en mi pc, asi explico las clases como si mi salón tuviera un video beam, pero tengo un problema que he buscado y aun no logro resolver. No se ve el puntero de mi mouse en los demás escritorios.

    Me gusta

  9. Existen webs como http://www.no-ip.com, para redireccionar hacia aquellas ips que son dinamicas. El software que proveen a los equipos clientes direccionados es para distintas plataformas Linux, Windows o Mac. de forma que cuando cambia tu ip (configurables los tiempos de comprobación), informa a http://www.no-ip.com de tu nueva ip. El cliente siempre debería teclear p.ejmplo: x11vnc -connect tusitio.definido:5500 y de esta forma no tendríamos que averiguar la ip para facilitarsela al cliente.

    Me gusta

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.