Está en la página 1de 5

MANUAL INSTALACIÓN, CONFIGURACIÓN, USO E INFORMACIÓN

ACERCA DEL ULTRAVNC EN UBUNTU

Antes de nada, aclarar que la instalación del vnc que se va a hacer es el x11vnc-server,
producto que necesita que el sistema Wayland de Ubuntu esté deshabilitado, ya que, como su
propio nombre indica, solo funciona con sistemas x11.

En este manual, vamos a dividir por bloques para tener todo mejor gestionado.

INSTALACIÓN DE X11VNC
La instalación es muy sencilla, basta con hacer:

# sudo apt-get install x11vnc

Realizará la instalación de los paquetes necesarios, y una vez acabe podremos


probar si realmente funciona lanzando el comando x11vnc.

Nota: Lanzar la ejecución del programa con el usuario en curso, si se intenta


hacer con el usuario sudoer o con el usuario root no funcionará.

CONFIGURACIÓN DEL X11VNC


Lo primero que haremos, será poner una contraseña para guardar ahí las
credenciales de acceso, que se guardarán en una ubicación local, en el caso
mostrado a continuación, se ha creado una carpeta el la raiz de la carpeta
/home/ llamada .vnc y ahí dentro generamos el archivo encriptado con la
contraseña:

# x11vnc -storepasswd /home/.vnc/passwd

Modificamos los permisos de la carpeta y del archivo para que todos los
usuarios tengan acceso de lectura al archivo, ya que si no, no se podría
verificar que la contraseña introducida por el cliente corresponda con la del
servidor.

Algunas de las variables que vamos a utilizar en el lanzamiento del programa


son las siguientes:

-auth -> autoridad que está solicitando el permiso para mostrar lo que
está viendo, en el caso del login es el usuario gdm el que está
mostrando esa pantalla, y en caso de estar en un escritorio será ese
usuario el que te lo esté mostrando. Es un archivo .Xauthority el que da
toda esa información. Existen 2 ubicaciones para poder mostrar esa
información:
1. Ubicación absoluta: /run/user/xxxxxx/gdm/Xauthority
2. Ubicación relativa de usuario: ~/.Xauthority
En el caso de querer levantar el vnc con el login de los usuarios, sí o sí
hay que utilizar el usuario gdm (normalmente número 120-129), y en el
caso de los usuarios, se generan distintos grupos dependiendo el tipo
de privilegios que tengan (sudoers | usuarios locales sin permisos |
usuarios del dominio).

-forever -> Normalmente, el x11vnc se cierra y no se vuelve a conectar


una vez realizada una conexión. Para evitar ese problema, poniendo
este argumento se levantará una y otra vez para tenerlo disponible
cuando se necesite (-many y - -loop son iguales)

-noxdamage -> Deshabilita la extensión X Damage, que aunque ofrezca


una compresión mayor, suele dar fallos.

-repeat -> Evita la desconexión del X server automáticamente cuando


no hay movimiento de la conexión por más de 5 minutos (timeout por
defecto).

-rfbauth -> ubicación de la contraseña contra la que poder verificar


cuando se hace una conexión hacia el servidor. “/home/.vnc/passwd”

-rfbport -> puerto utilizado para realizar la conexión entre cliente y


servidor (por defecto 5900)

-shared -> Como su propio nombre indica, para poder compartir el


display del VNC.

-accept -> Método utilizado para la conexión hacia el servidor: En caso


de omisión haría una conexión directa y en caso de poner -accept
popup saldría una pantalla emergente la cuál el usuario podría aceptar
o rechazar.

-display -> Selección del display al que pertenece la sesión de usuario.


Normalmente -display :0 hace un rastreo de los distintos displays que
puede haber (1 - 27)
CONFIGURACIÓN DEL X11VNC CÓMO SERVICIO DEL SISTEMA (AUTOARRANQUE)
A continuación, vamos a ver cómo poder dejar el x11vnc preparado para que
tenga una ejecución a nivel de sistema y dejarlo automatizado para el auto
arranque y ejecución en todos los planteamientos deseados.

Vamos a crear en la ruta /lib/systemd/system los servicios que vayamos a


querer generar. Hay que tener en cuenta que cada tipo de conexión necesita
un servicio concreto, así que en nuestro caso haremos 4 servicios distintos:
- Servicio para la conexión en la pantalla de login sin que de
momento haya ningún usuario conectado (Pantalla login gdm3): Se
puede conectar automáticamente sin tener que pedir ningún tipo
de permiso siempre y cuando se sepa la contraseña maestra.
(Puerto 5901)
- Servicio de conexión hacia usuarios del dominio: Solicita permiso al
usuario para una conexión que aparece en forma de popup en el
medio de la pantalla, y en caso de que el usuario acepte, pide la
contraseña maestra de conexión.
- Servicio de conexión hacia usuarios locales sin permisos: Solicita
permiso al usuario para una conexión que aparece en forma de
popup en el medio de la pantalla, y en caso de que el usuario
acepte, pide la contraseña maestra de conexión.
- Servicio de conexión hacia usuarios sudoers locales: Puerta trasera,
para poder acceder gráficamente a un equipo sin tener que estar
en frente de él. (Puerto 5902)

Nota: Seguramente que si un usuario del dominio tuviera grupo de sudo


tendría un grupo nuevo o se movería al grupo de usuario de sudoers

# nano /lib/systemd/system/x11vnc-login.service

[Unit]
Description=Start x11vnc-login at startup.
After=multi-user.target
[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -auth /run/user/125/gdm/Xauthority
-forever -loop -noxdamage -repeat -rfbauth /home/.vnc/passwd
-rfbport 5901 -shared -display :0
[Install]
WantedBy=multi-user.target
# nano /lib/systemd/system/x11vnc-domain.service

[Unit]
Description=Start x11vnc for domain users at startup.
After=multi-user.target
[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -auth
/run/user/1377612612/gdm/Xauthority. -forever -loop -noxdamage
-repeat -rfbauth /home/.vnc/passwd -rfbport 5900 -shared -accept
popup -display :1
[Install]
WantedBy=multi-user.target

# nano /lib/systemd/system/x11vnc-local.service

[Unit]
Description=Start x11vnc for local users at startup.
After=multi-user.target
[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -auth /run/user/1002/gdm/Xauthority
-forever -loop -noxdamage -repeat -rfbauth /home/.vnc/passwd
-rfbport 5900 -shared -accept popup -display :1
[Install]
WantedBy=multi-user.target

# nano /lib/systemd/system/x11vnc-sudoer.service

[Unit]
Description=Start x11vnc-login at startup.
After=multi-user.target
[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -auth /run/user/1000/gdm/Xauthority
-forever -loop -noxdamage -repeat -rfbauth /home/.vnc/passwd
-rfbport 5902 -shared -display :0
[Install]
WantedBy=multi-user.target
Una vez generados los 4 servicios, debemos habilitarlos cómo servicios, para
eso realizamos la siguiente tarea:
# systemctl daemon-reload
# systemctl enable x11vnc-sudoer.service
# systemctl enable x11vnc-login.service
# systemctl enable x11vnc-local.service
# systemctl enable x11vnc-domain.service

# systemctl start x11vnc-sudoer.service


# systemctl start x11vnc-login.service
# systemctl start x11vnc-local.service
# systemctl start x11vnc-domain.service

Reiniciamos y probamos a ver si conecta el equipo.

También podría gustarte