sábado, 14 de septiembre de 2013

Control remoto en el trabajo.... o donde quieras

Sábado noche, 22:00 horas aproximadamente. Recibo una llamada de mi querido amigo Antonio, que por vicisitudes de la vida se encuentra a más de 7000 km de distancia, tostándose al sol en Miami. Tenía un problema en su portátil con Güindous (si no es por eso, no llama, eso seguro....)

El caso es que se explicaba como un libro cerrado. Logré entender que tenía un problema con una base de datos que se lleva del trabajo a casa. Intenté, con la paciencia del santo Job, explicarle lo que tenía que hacer, pero nada, había un maldito error PIBCAK en el sistema .... Por experiencia, sé que en estos casos podía estar hasta el día del Juicio Final explicándole lo que tenía que hacer sin conseguir nada. Así que lo primero es eliminar el PIBCAK. ¿Que qúe es un PIBCAK? Un Problem Is Between Chair and Keyboard....

Así que, ni corto ni perezoso, le dije:

- Mira, abre el google y escribe: T E A M V I E W E R..... ¿Lo ves?. Vaaaale. Pulsa en el primer enlace.... ¿Ya?.... Ahora pulsa en la pestaña descarga..... Venga, vamos bieeen.... Ahora baja un poco por la página y verás las descargas de la versión completa.... NO PULSES AHI!!!!! Sigue un poco más para abajo..... y verás otra descarga que dice “Para los clientes inmediatos: TeamViewer QuickSupport”. ¿La ves? Ea, pues pulsa ahí y espera un momentito.... Si, si, dale a ejecutar.... ¿Ves la ventana que te sale? Dime el código que te sale en donde pone Tu ID.... (Él estaba viendo algo así)






Y yo por mi parte, con el Teamviewer ya instalado en mi equipo, estaba viendo esto otro:


 Pues nada, le doy a conectar y le pido a mi amiguete la contraseña:


Et voilá:


Y le dije:


- Efectúa un movimiento hacia atrás, separándote como mínimo un metro de tu equipo, y... NO TOQUES NADA!!!

Bueno, pues esta es mi vida habitualmente.... Cuando trabajo, y cuando estoy en casa. Esta aplicación es gratuita, y tiene versiones para Linux, Windows, Mac y móviles. El control remoto es mi herramienta de trabajo principal. Pero es una aplicación que, así instalada,  requiere de interacción en las dos partes de la comunicación. ¿Y si queremos un control remoto de otra máquina, cuando no hay nadie delante de ella? Entonces tenemos que recurrir a configurarla adecuadamente. Existen muchas aplicaciones de control remoto en el mercado: la anteriormente descrita TeamViewer, VNC en multitud de variantes (UltraVNC, TighVNC, RealVNC...), DameWare, Radmin...



Para nuestros equipos en Debian, vamos a utilizar un servidor VNC. Son las siglas de Virtual Network Computing. VNC, en contra de lo que podáis creer, es un programa de software libre. Sobre él se han desarrollado aplicaciones comerciales propietarias, pero su código fuente es abierto y numerosos programas se han desarrollado sobre él bajo licencia GNU General Public License.

En este post os voy a describir la instalación de un servidor VNC en nuestro PC con Linux, y veremos cómo conectarnos a él bajo diversas arquitecturas (Linux, Windows y Android). No puedo describiros cómo conectarnos bajo IOS o MAC, ya que, lamentablemente, los clientes VNC de nuestros amigos de Cupertino son de pago..... Peor para ellos. Aunque estoy dispuesto a efectuar la prueba a fondo, si alguno tiene la enorme amabilidad de regalarme uno....

He sopesado la posibilidad de realizar esta conexión bajo un túnel VPN, pero lo he desechado. La seguridad es importante en todo lo que hacemos por la red, pero no debemos obsesionarnos con ella. Siempre correremos el riesgo, al dejar nuestra máquina encendida y conectada a Internet, de sufrir ataques externos. Pero, por experiencia, sé que cuanto más protejas una máquina, más intentos hay de acceder a la misma. Así que protegeremos nuestro servidor de VNC, como no podía ser de otra forma, pero sin volvernos paranoicos. De todas formas, si alguien está interesado, con una simple búsqueda en Google de “VNC over VPN”, salen más de 3 millones de resultados, y algunos son francamente buenos.

Veamos su funcionamiento.

12:15 PM, Lunes. El pelota de Jaime se ha llevado al jefe a tomarse una cerveza. Eso nos da 25 minutos para meternos con Pepe, ya que su equipo del alma ha perdido por 4 goles el Domingo pasado. La verdad es que a los cinco minutos estamos cansados, ya que Pepillo pasa olimpicamente de nosotros, porque está intentando que Rocio se tome una cerveza con él al salir de trabajar... Pobre iluso... Está coladito por ella y todavía no le hemos dicho que tiene novia.... Y ella nos sigue el juego.... En la comida de Navidad, que van a venir las dos juntas, va a ser la leche...

En fin, decido conectarme a mi PC en casa, para ver si la peli del Hobbit se ha terminado de bajar ya o no.... Ya que Pepe está distraido, me siento en su equipo y abro el ¿fantástico? Internet Explorer.

Para conectarme a mi equipo en casa, ya que no tengo IP fija, he dado de alta un dominio en dnsdynamic.org. No voy a repetir como se hace, me remito al segundo post de instalación de servidor (AQUI).

Ahora, sólo tengo que introducir lo siguiente en el explorador:

http://mi_dirección:5800

Y ya está, ya veo mi equipo.... y ¡¡¡SI!!!, ya se ha bajado..... Huy, me desconecto, que viene el jefe. La próxima vez, me voy al baño y lo hago con mi smartphone...

Bueno, basta de perder el tiempo y vamos al lío. Os voy a explicar como se hace. Empezamos instalando en nuestra máquina el software de servidor VNC. El paquete a instalar se llama x11vnc, así como una extensión del mismo escrito en java llamado vnc-java y se instalan desde la consola con un simple sudo apt-get install x11vnc vnc-java.





Consideración sobre la extensión de Java: todos hemos leído sobre los errores de seguridad de Java. Desde que Oracle adquiriera Sun Microsystem, los errores y agujeros de seguridad han sido sonados. Pero volvemos a la raíz del problema: el usuario. Java podrá tener agujeros, pero si no visitas ninguna página "peligrosa", estás a salvo.

Me he decidido a instalar esta extensión para tener la posibilidad de acceder desde cualquier sistema y/o dispositivo que soporte Java, pero también veremos la instalación de clientes en esos mismos sistemas/dispositivos. Yo os explico todas las posibilidades, ya que dependerá en cada caso, que podamos usar una u otra.

Una vez instalado el software en nuestro equipo, vamos a ver que opciones vamos a utilizar. Como en (casi) todas las aplicaciones de Linux, el comando man x11vnc nos dará en pantalla toda la información de sus numerosísimas opciones.

Vamos a establecer, lo primero de todo, una contraseña segura. Para ello tecleamos x11vnc -storepasswd . Recordad, siempre, poner una contraseña compleja, tened en cuenta que dejamos nuestro equipo abierto a la red...



Una vez hecho esto, ponemos en marcha el servidor vnc. Podemos crearnos un lanzador o añadir como aplicaciones al inicio, si os resulta más cómodo, pero en definitiva el comando a ejecutar es el siguiente:

x11vnc -forever -usepw -httpdir /usr/share/vnc-java/ -httpport 5800



Esto ejecuta el servidor VNC y lo deja preparado para conexiones remotas. A partír de este momento, nuestro servidor de VNC queda esperando requerimientos de acceso en los puertos 5800 (que hemos definido) o 5900 (puerto utilizado por defecto). Si algún cliente hace una solicitud a esos puertos, se realiza la autenticación por contraseña requerida con el parámetro -usepw. Si la autenticación es correcta, nuestro servidor VNC se encarga de transmitir nuestra pantalla. Lo hace pixel a pixel, escaneando de izquierda a derecha y de arriba a abajo. Una vez transmitida toda la pantalla, el protocolo VNC se encargará de transmitir sólo aquellos pixeles que cambien de estado. Es por esto que la presentación de la pantalla inicial se demora un tanto, así como cualquier apertura-movimiento-cierre de ventanas que hagamos en remoto. Estas operaciones consumen un ancho de banda bastante grande. No así el movimiento del ratón, que con unos simples pixeles se ven prácticamente sin delay.
Siempre que hablamos de pantalla, nos referimos, por supuesto a la salida de la tarjeta gráfica. Es decir, no es necesario tener físicamente conectado un monitor en el equipo que ejerce de servidor VNC, y, por el contrario, si tenéis doble monitor conectado y el escritorio expandido... o tenéis una ADSL de esas nuevas de más de 50 MB, o las pasaréis canutas....

El parámetro -forever, fuerza al servidor VNC a continuar abierto una vez que nos desconectemos de nuestra sesión VNC. Así, incluso en caso de corte de linea o bloqueo/reseteo de nuestro visor o S.O. (algo raro si nos conectamos desde Windows, ¿verdad?) podríamos volver a efectuar la conexión.

El parámetro -httpdir /usr/share/vnc-java/ indica la ruta donde está ubicado la extensión de Java que se ejecutará en la máquina remota.

Y por último, el parámetro -httpport 5800 no creo que necesite descripción.....

Doy por sentado que aquellos que utilizáis firewall, ya sabéis que tenéis que dejar abiertos estos puertos para que esto funcione.

Aprovechando que mi vecinita me ha pedido que le revise su pc, me voy para allá, y empiezo a ver si esto rula o no. Lamentablemente (para ella), tiene el S.O. de los chicos de Redmond instalado, así que poneos unos guantes de goma (por si los virus) y a probar. Como he instalado la extensión de Java, puedo conectarme directamente con el Internet Explorer, en concreto al puerto 5800 de la siguiente manera: http://mi_dirección:5800


Empezamos bien.... Pues nada, actualizamos Java. Un vez actualizado, intentará ejecutar la extensión en nuestra máquina:


Por supuesto, aceptamos.


Vemos que nos solicita la clave de acceso, y ya estamos conectados.

Rizando un poco el rizo, y aprovechando que mi vecinita está preparándome un café, conecto mi pendrive, en el que llevo el vncViewer portable, y pruebo también con este método. En el caso de visores VNC, el puerto por defecto utilizado es el 5900. 


No muestro los resultados, ya que son los mismos. Bien, llevo dos de dos.... Ahora vamos a probar con la tablet. Esto de las tablet y los smartphones es un gran invento.... Siempre que tengas cobertura de datos (y hoy en día hay en una gran parte de la geografía), te permite seguir conectado. Da igual que estéis en la playa o en la montaña (bueno, en la montaña hay alguna limitación). El caso es que desde cualquier parte, como quien dice, podemos, en este caso, conectarnos a nuestro equipo en casa. Para ello, me instalo un cliente de vnc para android, y a correr. En este caso, he instalado el androidVNC. Lo ejecuto, y el procedimiento es igual:


Puerto 5900, ya que se trata de un visor VNC. Recordar:

Explorador (Firefox, Chrome, Opera, IE...) --- 5800
VNC Viewer --- 5900 


Y ya véis que sí, que se conecta sin problema. Tres de tres...

Pues eso es todo amigos. Os dejo, que viene mi vecinita con el café.....

No hay comentarios:

Publicar un comentario