Instalar y configurar x11vnc en openSUSE

En este artículo veremos brevemente como poner en funcionamiento el servicio x11vnc en openSUSE.

A diferencia de las instancias VNC's tradicionales que podemos configurar desde Yast, que básicamente son sesiones gráficas independientes controladas por el servidor gráfico (creo), x11vnc tiene la particularidad de que comparte el escritorio gráfico utilizado por el operador del equipo, osea, la sesión gráfica cero o X0.

Ponerlo en funcionamiento es muy simple en openSUSE, los pasos van a continuación:

Pasos de instalación y configuración

  1. Primero comenzamos por instalar el paquete x11vnc, eso lo hacemos ejecutando el siguiente comando con el usuario root:
    testsrv:~ # zypper in x11vnc
  2. Luego nos conectamos con el usuario que normalmente opera el equipo y ejecutamos el comando vncpasswd para registrar una contraseña para el servicio x11vnc, que deberá ser especificada cada vez que un usuario remoto intente acceder al servicio.
    testsrv:~ # su - usuario
    usuario@testsrv:~> vncpasswd

    Using password file /home/usuario/.vnc/passwd
    VNC directory /home/usuario/.vnc does not exist, creating.
    Password:
    Verify:
    Would you like to enter a view-only password (y/n)? n
    usuario@testsrv:~>
    El comando vncpasswod nos permite especificar dos contraseñas, una para el modo edición que permite al usuario remoto controlar nuestro escritorio y otra totalmente distinta para el modo de solo lectura, donde el operador remoto solo está autorizado a visualizar nuestro escritorio, no así a controlarlo. En el ejemplo anterior no especifiqué la contraseña para el modo de solo lectura ya que la misma es opcional.

  3. A continuación en el directorio home del mismo usuario creamos el archivo oculto llamado .x11vncrc, que es el archivo de configuración que por defecto busca y utiliza la aplicación x11vnc:
    usuario@testsrv:~> touch .x11vncrc
    usuario@testsrv:~> vi .x11vncrc

    Una vez abierto el archivo yo normalmente le agrego el siguiente contenido:
    # Ejecucion en segundo plano.
    -bg

    # Comparte la interfaz grafica 0.
    -display :0

    # Mantiene en ejecucion el servicio para recibir mas conexiones.
    -forever

    # Archivo de passwords.
    -rfbauth .vnc/passwd

    # Salta Lockkeys.
    -skip_lockkeys

    # Solicitar password.
    -usepw
    Pero Ustedes pueden agregar muchas más opciones de configuración que se encuentran detalladas en el man page de x11vnc.

  4. Ahora ya podemos ejecutar la aplicación x11vnc desde la línea de comandos:
    usuario@testsrv:~> x11vnc
  5. Para ejecutar automáticamente la aplicación cada vez que accedemos a nuestro escritorio luego de reiniciar el equipo, tenemos que agregar un archivo lanzador en la ruta .config/autostart/ dentro del home de nuestro usuario, asignarle los permisos correspondientes y luego editarlo como se muestra a continuación:
    usuario@testsrv:~> mkdir -p ~/.config/autostart/
    usuario@testsrv:~> touch ~/.config/autostart/x11vnc.desktop
    usuario@testsrv:~> chmod 755 ~/.config/autostart/x11vnc.desktop
    usuario@testsrv:~> vi ~/.config/autostart/x11vnc.desktop

    Una vez abierto el archivo le agregamos el siguiente contenido:
    [Desktop Entry]
    Comment[es]=
    Comment=
    Encoding=UTF-8
    Exec=/usr/bin/x11vnc
    GenericName[es]=
    GenericName=
    MimeType=
    Name[es]=x11vnc
    Name=x11vnc
    Path=~/
    StartupNotify=true
    Terminal=false
    TerminalOptions=
    Type=Application
    X-DBUS-ServiceName=
    X-DBUS-StartupType=
    X-KDE-SubstituteUID=false
    X-KDE-Username=

    Con ello cada vez que se cargue nuestro escritorio preferido la aplicación x11vnc se ejecutará automáticamente. La configuración anterior también estará accesible en KDE 4 desde Preferencias de sistema --> Arranque y apagado --> Autoarranque --> Archivos de escritorio.

  6. Sin embargo aún nos resta hacer algo muy importante, tenemos que habilitar los puertos para el servicio en el firewall de openSUSE. Para ello nos conectamos con el usuario root y editamos el archivo SuSEfirewall2 ubicado en el directorio /etc/sysconfig:
    usuario@testsrv:~> su - 
    testsrv:~ # vi /etc/sysconfig/SuSEfirewall2

    Una vez abierto buscamos la directiva FW_CONFIGURATIONS_EXT que es normalmente la zona de firewall a la cual se encuentra asociada por defecto la interfaz de red y le agregamos al final el servicio resaltado en rojo vnc-server:
    FW_CONFIGURATIONS_EXT="apache2 sshd vnc-server"
    Guardamos los cambios del archivo y salimos de él para finalmente reiniciar el firewall:
    testsrv:~ # rcSuSEfirewall2 restart
    Y ahora si listo!!, ya deberíamos poder acceder remotamente al equipo sin mayores problemas.
(El artículo debería haber sido breve...)


Enlaces:

Comentarios