Autor Tema: Escritorio remoto (y libre) en GNU/Linux  (Leído 14205 veces)

Colegota

  • Palizas oficial
  • *
  • Mensajes: 8188
  • ¡Me faltan carretes!
    • ¡Me faltan carretes!
Escritorio remoto (y libre) en GNU/Linux
« on: 14 mar 2013, 09:10 am »
Buenas,

hay una famosa aplicación privativa que se ha popularizado en los últimos años para acceder a un ordenador desde otro remoto de forma sencilla [1]. Lo malo es que como privativa que es tiene algunos inconvenientes, el primero de ellos que durante un largo periodo de tiempo no ha habido cliente que funcionase en (al menos algunas de) las distros de 64 bits en GNU/Linux y como no se dispone del código fuente no era posible compilarla. El otro aspecto a valorar es que precisamente se trata de una aplicación a la que le das permiso para acceder a todo tu ordenador y a transmitirlo por Internet y realmente no puedes saber lo que está haciendo por la misma razón de no estar publicado su código.

Lo que uno tal vez no se espera es que es muy sencillo conectarse a un escritorio remoto con aplicaciones libres en GNU/Linux. Basta con unas preguntas en Blogdrake y FotoLibre o seguir este resumen de cómo lo hice yo.

Lo primero que debemos hacer es entender lo que necesitamos. Queremos conectarnos al ordenador de otra persona desde el nuestro. En mi caso se trata de poder resolver las dudas que le surgen a veces a mi madre y que no siempre acierta a describirme por teléfono. Así que cuando me llama, yo me conecto a su ordenador, veo lo que tiene en pantalla e incluso puedo trabajar en su ordenador desde el mío como si estuviera en su casa. Basta con utilizar el protocolo VNC para el que en GNU/Linux hay muchos servidores y clientes.

Las necesidades pues son tres:

1) Necesitamos un programa en el ordenador remoto que nos envíe la información de éste. Este será el servidor. Para ello utilizaremos el programa x11vnc que viene en los repositorios de cualquier distro.

Una vez instalado dispone de multitud de opciones pero a nosotros nos basta con lanzarlo desde la consola del equipo al que nos queremos conectar con este comando

Código: [Seleccionar]
$ x11vnc -bg -forever -passwd laclaveelegida

Si añadimos la opción -gui nos aparecerá una ventana desde la que  configurar cualquier parámetro, pero no es necesario para un funcionamiento normal.

En el router del usuario remoto deberemos abrir los puertos 5900 y 5901.

2) Necesitamos conocer la IP del ordenador remoto para poder conectarnos a él desde el nuestro. Como sabéis la casi totalidad de las conexiones domésticas a Internet se realizan con IP dinámica, es decir, la identificación de tu conexión en Internet cambia cada vez que enciendes o apagas el router.
La persona que se encuentra en el ordenador remoto puede hacer una búsqueda en Internet con las palabras "cual es mi ip" y le saldrán diferentes páginas en las que se la digan. Dicha persona debería hacerte saber esa dirección para que en el siguiente paso tú te conectes, pero esto implica ya un mínimo de conocimientos de la otra persona que no siempre podemos asegurar.

Cada vez quedan menos servicios gratuitos que nos proporcionen una forma de acceder a un ordenador con IP dinámica, pero de momento al menos en http://no-ip.org podemos disponer de hasta tres direcciones dinámicas gratuitas. Si nos creamos un usuario ahí, podremos acceder a nuestro ordenador a través de una dirección del tipo http://miusuario.no-ip.org sin tener que preocuparnos de cuál es esa IP que va cambiando con el tiempo.

Eso sí, el truco es que desde el ordenador remoto hay que conectarse a no-ip.org cada vez que cambiamos de IP, es decir si apagamos y encendemos el router. Pero afortunadamente esto se puede automatizar de varias formas. En nuestro caso, podemos descargar un programa desde la página de no-ip.org que realice ese trabajo por nosotros. Luego seguimos las instrucciones para instalarlo (hay una guía diferente para Ubuntu).

Consiste básicamente como pone ahí en descomprimir el archivo, compilarlo con un $ make y un # make install y luego ejecutarlo como root con la opción -C (mayúscula) para configurarlo.

Haciendo /usr/local/bin/noip2 -C desde root, se genera el fichero de configuración en /usr/local/etc/no-ip2.conf que luego utilizaremos para realizar la llamada.

Yo necesité cambiarle el propietario al programa y al fichero de configuración mediante un chown usuario:usuario porque si no sólo lo podía ejecutar desde root.

A continuación, ya se puede ejecutar el cliente y cada vez que lo lanzas, actualiza la dirección tutusuario.no-ip.org con la IP del router en ese momento.

Código: [Seleccionar]
/usr/local/bin/noip2 -c /usr/local/etc/no-ip2.conf
3) En el ordenador desde el que queremos conectarnos al remoto, es decir desde el nuestro, necesitaremos un cliente de VNC que sea capaz de entenderse con el servidor x11vnc que hemos instalado en el ordenador remoto. Para ello usaremos el programa Tigervnc que también se encuentra en casi todos los repositorios.

Una vez que en el ordenador remoto se ha lanzado el servidor x11vnc, en el nuestro deberemos lanzar el visor de Tigervnc que sin embargo se llama vncviewer

Código: [Seleccionar]
$ vncviewer [ip del ordenador remoto/dns-dinámica]
Por ejemplo, si tenemos una dirección de no-ip.org, sería

Código: [Seleccionar]
$ vncviewer mimadre.no-ip.org
Primero saldrá una pequeña ventana que nos pedirá la clave que se ha introducido en la llamada al servidor, la de $ x11vnc -bg -forever -passwd laclaveelegida.

Entonces nos aparecerá en pantalla una nueva ventana como esta en la que podéis apreciar el escritorio de mi madre visto desde el mío.


Un par de capturas más sólo de la ventana que contiene el visor del escritorio remoto.



Paso final: Automatizarlo

Si el usuario del ordenador remoto tiene una cierta experiencia y es capaz de usar la consola, bastará con que le indiquemos que lance el servidor x11vnc y el cliente de no-ip.org para poder conectarnos a su maquina. Si como en el caso de mi madre esto es demasiado pedir, podremos lanzar dichos comandos desde el fichero /etc/rc.local que se ejecuta al inicio del sistema. Basta con editarlo como root y añadirle las dos llamadas que necesitamos, lanzar el servidor y ejecutar el cliente de no-ip.org para que actualice la IP dinámica. Así es como queda el fichero en mi caso. Las primeras líneas ya existían, yo sólo he añadido las nuevas órdenes.

Código: [Seleccionar]
[mila@localhost ~]$ cat /etc/rc.local
#!/bin/sh
#
### BEGIN INIT INFO
# Provides: rc.local
# X-Mandriva-Compat-Mode
# Default-Start: 2 3 4 5
# Short-Description: Local initialization script
# Description: This script will be executed at the end of the boot process.
#              You can put your own initialization stuff in here if you don't
#              want to do the full Sys V style init stuff.
### END INIT INFO

touch /var/lock/subsys/local

#___ no.ip.org ___
/usr/local/bin/noip2 -c /usr/local/etc/no-ip2.conf

#___ arrancar servidor vnc ___
/usr/bin/x11vnc -bg -forever -passwd laclaveelegida

Así, cada vez que me llama por teléfono, simplemente le digo, espera, me pongo en mi ordenador y tecleo $ vncviewer mimadre.no-ip.org y entonces ya empieza a explicarme eso de que "no le funciona". ;)

Saludos,
Colegota

[1] Programa privativo Teamviewer 8 llega a Linux en MuyLinux.
[Canon EOS 50 40D (sin diapos ni nada)] [Escáner Minolta DSE 5400] [Vuescan] [El GIMP] [Galería] [Página de Viajes]

elpecoso

  • Milenari@
  • *
  • Mensajes: 1471
  • Esto es lo que somos
    • La madriguera del escobrice
Re: Escritorio remoto (y libre) en GNU/Linux
« Respuesta #1 on: 14 mar 2013, 11:05 am »
Muy completo  :-)
Opciones:
- Instalar el servicio de redireccionamiento de IP en el router (asi lo tengo yo usando el servicio Dyndns)
- No arrancar ningun servicio, simplemente entrar por SSH y arrancarlos tú

Y luego está lo de instalar un sistema de collejas automatico para dar al usuario cuando despues de haberle dicho 3459608 veces que no toque ni el teclado ni el ratón, se pone a manejarlos  :DDD :DDD

chau!
Me gustaría cambiar el mundo, pero no me dan el código fuente
<- La ultima de La madriguera del escobrice

Colegota

  • Palizas oficial
  • *
  • Mensajes: 8188
  • ¡Me faltan carretes!
    • ¡Me faltan carretes!
Re: Escritorio remoto (y libre) en GNU/Linux
« Respuesta #2 on: 14 mar 2013, 15:35 pm »
Muy completo  :-)
Opciones:
- Instalar el servicio de redireccionamiento de IP en el router (asi lo tengo yo usando el servicio Dyndns)

Cierto, aunque al menos los routers de Telefónica sólo admiten el proveedor DynDNS y éste hace tiempo que dejó de dar cuentas gratis.

Además por ejemplo en los NAS de Qnap se puede configurar, que es lo que tengo yo en casa. Y estos admiten cualquier servicio.

- No arrancar ningun servicio, simplemente entrar por SSH y arrancarlos tú

También. Me lo dijiste y no me acordaba. Pero hay que reconocer que la opción automatizada es más comodona. 8-)

Y luego está lo de instalar un sistema de collejas automático para dar al usuario cuando después de haberle dicho 3459608 veces que no toque ni el teclado ni el ratón, se pone a manejarlos  :DDD :DDD

Hombre, en mi caso no, que madre no hay más que una. O:-) Pero sí que es cierto que ocurre. :girl_hide:
[Canon EOS 50 40D (sin diapos ni nada)] [Escáner Minolta DSE 5400] [Vuescan] [El GIMP] [Galería] [Página de Viajes]

JoRdi

  • Palizas oficial
  • *
  • Mensajes: 10191
Re: Escritorio remoto (y libre) en GNU/Linux
« Respuesta #3 on: 19 mar 2013, 17:08 pm »
Hola,

Se agradece la información q:) , hoy me iré a dormir sabiendo una cosa más.

A rev3ure

Blueswells9999

  • Comenzando
  • *
  • Mensajes: 3
Re: Escritorio remoto (y libre) en GNU/Linux
« Respuesta #4 on: 16 feb 2016, 19:16 pm »
Hola colegota, de nuevo gracias por este excelente aporte (en verdad excelente  :plas:), volví para realizarlo totalmente  :-b

En el camino de realizarlo me encontré que tigervnc es bastante complicado de compilar y no existe en los repositorios, por lo menos los de linux Mint. Existen paquetes .deb para su instalación, que luego de buscar mucho los vi en la pestaña "files" donde ellos (el equipo de TigerVNC)  alojan los ejecutables https://bintray.com/tigervnc/stable/tigervnc/1.6.0#files/ubuntu-14.04LTS/amd64 se puede elegir de acuerdo a la arquitectura.

Tengo una pregunta hasta donde voy en el proceso (antes de automatizar) ¿cómo puedo modificar la resolución que llega, es decir, la del escritorio visto para que se vea más grande? Ahora mismo lo veo en una resolución tal vez de 640x480   :(

Saludito y gracias

Blueswells9999

  • Comenzando
  • *
  • Mensajes: 3
Re: Escritorio remoto (y libre) en GNU/Linux
« Respuesta #5 on: 16 feb 2016, 20:43 pm »
Y una segunda pregunta. Tengo varios equipos conectados en red por lo tanto en ellos coincide la IP pública. ¿Cómo puedo entonces "especificar" a qué computador se debe conectar no-ip?  :ejem:

dodecaedro

  • Veteran@
  • *****
  • Mensajes: 559
Re: Escritorio remoto (y libre) en GNU/Linux
« Respuesta #6 on: 17 feb 2016, 06:49 am »
Esto lo guardo .. todos tenemos un ordenador en la distancia del que ocuparnos.
se agradece.
dodecaedro

elpecoso

  • Milenari@
  • *
  • Mensajes: 1471
  • Esto es lo que somos
    • La madriguera del escobrice
Re: Escritorio remoto (y libre) en GNU/Linux
« Respuesta #7 on: 17 feb 2016, 14:01 pm »
Y una segunda pregunta. Tengo varios equipos conectados en red por lo tanto en ellos coincide la IP pública. ¿Cómo puedo entonces "especificar" a qué computador se debe conectar no-ip?  :ejem:
Por los puertos
En cada PC al que te vayas a conectar le dices al VNC que use un puerto distinto
Luego en el router tendras que redirigirlos

chau!
Me gustaría cambiar el mundo, pero no me dan el código fuente
<- La ultima de La madriguera del escobrice

Blueswells9999

  • Comenzando
  • *
  • Mensajes: 3
Re: Escritorio remoto (y libre) en GNU/Linux
« Respuesta #8 on: 17 feb 2016, 16:41 pm »
Gracias @elpecoso hasta ahora veo tu info, lo he logrado consultando precisamente eso.

En mi caso la máquina que intento controlar remotamente es un Raspberry Pi 2, y el tema de la resolución no fue sencillo porque tuve problemas hasta con el inicio de sesión (luego de realizar cambios en el txt del boot).

Para que vncviewer pueda identificar la máquina a la que debe dirigirse se utiliza el "port-forwarding", que se hace por medio del administrador del modem, en mi caso es uno arris, la información útil la saqué de:

https://raspberrypi.stackexchange.com/questions/13644/remote-access-with-vnc-outside-local-network
Por si tu modem está acá: http://www.howtogeek.com/66214/how-to-forward-ports-on-your-router/
Y para mi caso (arris): https://www.youtube.com/watch?v=kwKoLyojRL8

Tienen que dirigir los puertos 5900 y 5901 a la IP deseada. También fue necesario dejar la IP fija para evitar inconvenientes en el futuro (es muy sencillo cambiarla de estática a fija, un posible tutorial: http://elpregunton.es/como-configurar-direccion-ip-fija-linux-ubuntu/).

En el caso de la resolución, me encontré que cambiando el archivo /boot/config.txt en las líneas que especifican este post (no olviden quitar los "#" para quitar las líneas como comentarios): https://raspberrypi.stackexchange.com/questions/8985/forcing-resolution-on-display-0-when-hdmi-is-not-connected (y personalizando de acuerdo a mi resolución, en mi caso 1360x768) se resolvía la pantalla pequeñita.

Por si surgen problemas con el login en alguien que intente lo mismo en un Raspberry Pi: https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=27905&p=276059&hilit=tightvnc#p276059

Muchas gracias a todos y a @Colegota por el post. Salud   :baila: