administracion_remota

Upload: sitetec

Post on 06-Mar-2016

1 views

Category:

Documents


0 download

DESCRIPTION

VNC en LINUX

TRANSCRIPT

  • Administracin remota de un escritorio GNU/LinuxSergio Blanco Cuaresmahttp://www.marblestation.comhttp://www.gpltarragona.org

    VNC[1] (Virtual Network Computing) es un sistema que nos permite visualizar y controlarescritorios de forma remota sin tener que estar fsicamente delante del ordenador. Existe unaversin mejorada llamada TightVNC[2] que incorpora novedades y optimizaciones paraconseguir un buen rendimiento en redes ms lentas, es completamente compatible con el VNCoriginal y por supuesto tambin es libre.

    Podemos encontrar versiones de VNC/TightVNC tanto para sistemas GNU/Linux como paraMicrosoft Windows, por tanto podramos controlar escritorios Windows desde nuestroGNU/Linux (o viceversa) sin ningn problema.

    Cuando se configura el servicio VNC en un sistema Windows, este permite accederremotamente al escritorio con el que esta trabajando el usuario y por tanto, es posiblecontrolar su ratn/teclado para realizar tareas administrativas (e.g. configuracin del sistema)o para mostrar al usuario como se utiliza una herramienta determinada. Lo mejor es quepodremos hacerlo por red desde nuestro ordenador sin tener que desplazarnos hasta suoficina/hogar.

    En el caso del servicio VNC para GNU/Linux no se permite acceder directamente al escritoriodel usuario que est en ese momento en la mquina, sino que se accede a un escritorioindependiente. Esto implica que si por ejemplo un usuario necesita ayuda para cambiar sufondo de pantalla, no es posible usar VNC para controlar su escritorio de forma remota eintentar proporcionarle la ayuda demandada ya que el escritorio al que nosotros tenemosacceso no es el mismo que el del usuario.

    Para aquellos que entiendan el funcionamiento de las X, si tenemos un usuario utilizando elescritorio y un servidor VNC en la misma mquina cada uno escuchara por un puertodiferente:

    Escritorio del usuario - localhost:0 VNC Server - localhost:1

    Por suerte existe una aplicacin llamada Gemsvnc[3] que har que VNC para GNU/Linux tengael mismo comportamiento que en sistemas Windows.

    Gemsvnc es un servidor VNC que utiliza el escritorio en el cual ha sido ejecutado el programapara permitir el acceso remoto, de forma que basta con entrar en nuestro escritorio (noimporta si es GNOME, KDE) abrir una consola y ejecutar gemsvnc. Desde otro ordenadorconectado en red ejecutaramos vncviewer servidor:0 y se nos abrira una ventanamostrndonos el escritorio remoto, podramos controlar el puntero del ratn y escribir lo quesea necesario (curiosamente el nico problema que existe es con la tecla $, si pulsamosshift+4 escribir un 4 y no un $).

    Vamos a ver como podemos configurarlo en Gentoo (aunque en otras distribuciones tambinser muy similar) para que gemsvnc este siempre en marcha y pida password para poderestablecer la conexin.

    Instalaremos gemsvnc y tightvnc en el sistema con emerge gemsvnc tightvnc, gemsvn nosservir como servidor y tightvnc como cliente y para crear el password del servidor.

    Una vez instalados crearemos el password para permitir el acceso:

    # vncpasswd /etc/gemsvnc.passwdPassword:

  • Verify:Would you like to enter a view-only password (y/n)? n

    Esto nos crear el archivo /etc/gemsvnc.passwd con el password que hayamos indicadoencriptado, respecto al password para view-only no es necesario indicarlo ya que gemsvnc loignora y no permite esa funcionalidad.

    A continuacin haremos que en el gestor de login GDM se arranque automticamentegemsvnc, editamos el archivo /etc/X11/gdm/Init/Default y aadimos al final del mismo:

    ...killall gemsvnc/usr/bin/gemsvnc -runforever -quiet -rfbauth /etc/gemsvnc.passwd &exit 0

    Para aquellos que utilicen otros gestores de login como KDM tendris que averiguar quefichero cambiar o donde especificar lo que queris que se ejecute antes de iniciar la sesin.

    La ventaja de hacer que en este punto se arranque gemsvnc es que podremos accederremotamente al login y entrar nosotros mismos en la sesin del usuario, no es necesarioesperar a que el usuario del PC lo haga. A partir de la versin 2.8 de GNOME se incorpora laaplicacin vino que facilita la administracin remota usando VNC tal y como gemsvnc lohace, sin embargo esta no se activa hasta que el usuario no ha entrado en su sesin.

    Para poder probar gemsvnc, tendremos que terminar la sesin y volver a entrar en elescritorio para que se ejecute lo que hemos aadido al GDM.

    Ahora podemos irnos al segundo PC conectado en red, instalar tightvnc (emerge tightvnc) eintentar conectarnos al escritorio remoto con:

    $ vncviewer 192.168.0.3:0

    La IP debe corresponder a la del ordenador al que queremos conectarnos, podemos tambinutilizar el nombre de la mquina.

    Al ejecutar el comando debera aparecer una ventana preguntando el password de acceso, yacto seguido se mostrar una nueva ventana desde la cual tendremos acceso al escritorioremoto.

    Hay que tener en cuenta que la conexin con VNC no utiliza encriptacin, si estamos en unared insegura cualquiera podra ver el password o todos lo que hagamos en el escritorioremoto. Una posible alternativa es utilizar los tneles SSH para que los datos viajenencriptados, para esto es necesario tener un servidor SSH configurado en la mquina quetiene instalado gemsvnc. Desde el otro PC ejecutariamos en una consola:

    $ ssh -L 2000:servidor:5900 user@servidor -N

    Y en otra diferente:

    $ vncviewer localhost:2000

    El primer comando crea un tnel encriptado entre nuestra mquina y el servidor, los datos queenviemos a nuestro puerto 2000 irn a parar al puerto 5900 del servidor (tb podria ser unaIP) y para esto utilizaremos nuestro usuario user del servidor servidor (el mismo que elanterior). Este tipo de tneles tambin podramos utilizarlos para otros servicios diferentes aVNC.

    El segundo paso es conectarnos a nuestro puerto local 2000 como si tuvisemos ah unservidor VNC. El resto del funcionamiento es exactamente igual, la nica pega es que al aadirencriptacin es necesario ms ancho de banda y por tanto es posible que vaya ms lento.

    He probado el funcionamiento en una red local ethernet 100Mbps y funciona de maravillatanto de forma encriptada con SSH como de forma directa, como el lector puede imaginar noes lo mismo que estar en la escritorio real pero para tareas puntuales de administracin puede

  • ser muy til.

    Tambin lo he testeado entre dos ordenadores conectados con un ADSL 256 Kbps de bajada y128 Kbps de subida, de forma encriptada con SSH es tremendamente lento, en cambio sinencriptacin a pesar de la lentitud puede ser til tambin. Para esta aplicacin lo que senecesita es tener una buena subida y en nuestro caso solo es de 128 Kbps.

    En todo caso es posible regular la calidad de la imagen que recibimos del escritorio remotopara reducir las necesidades de ancho de banda, por ejemplo la peor calidad y el menorconsumo de ancho de banda se consigue con:

    $ vncviewer -encodings Tight -compresslevel 9 -quality 0 servidor:0

    Segn el caso conviene modificar el nivel de compresin y la calidad de la imgen paratrabajar con comodidad.

    Como apunte final me gustara aadir que he observado que gemsvnc falla de vez en cuando yel acceso remoto se queda inhabilitado hasta que el usuario sale y entra de su sesin. Si porejemplo estamos en el departamento de soporte de una empresa y utilizamos esta aplicacinpara ayudar a los usuarios, no podemos fiarnos simplemente de que se ejecuteautomticamente con el GDM as que lo mejor es tener un sencillo script en el sistema quetambin facilitar la vida a los usuarios ms noveles:

    #!/bin/bash CHECK=`ps aux|grep gemsvnc |grep runforever` if [ $? -eq 0 ]; then echo ERROR: Ya hay un escritorio remoto en ejecucin. echo Si desea pararlo ejecute killall gemsvnc como root. exitfi export DISPLAY=:0killall gemsvnc &> /dev/nullecho Escritorio remoto (VNC) en marcha!echo Pulsar CTRL+C para terminar/usr/bin/gemsvnc -runforever -quiet -rfbauth /etc/gemsvnc.passwd

    Podemos guardar este script por ejemplo en /usr/local/bin/escritorio-remoto y darlepermisos de ejecucin chmod 755 /usr/local/bin/escritorio-remoto". Hay que tener en cuentaque quien ejecute este script tambin debe tener permisos para acceder al fichero /etc/gemsvnc.passwd.

    Esto nos servir para cuando queremos acceder a una mquina y nos encontramos con quegemsvnc no se encuentra en marcha, podremos decirle al usuario que simplemente ejecute enuna terminal escritorio-remoto y se ejecutar de nuevo gemsvnc permitindonos acceder denuevo a su escritorio.

    [1] http://www.realvnc.com/[2] http://www.tightvnc.com/[3] http://www.elilabs.com/~rj/gemsvnc/

    Copyright (c) Sergio Blanco Cuaresma Permission is granted to copy, distribute and/or modify this document under the terms of theGNU Free Documentation License, Version 1.2 or any later version published by the FreeSoftware Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-CoverTexts. A copy of the license is included in the section entitled "GNU Free Documentation License".