Toma el control remoto de tus máquinas con vnc4server: soporte para múltiples usuarios e inicio de VNC antes de entrar en una sesión Gnome

Publicado el 07 noviembre 2012 por Ferlanero @ferlanero
Desde que Canonical introdujo en Ubuntu "Lightdm" como gestor de sesiones para X Window System, el control mediante escritorio remoto a través de VNC (Computación Virtual en Red) no es tan fácil como cabría imaginar. De hecho, estos días me he estado rompiendo la cabeza para lograr controlar de forma ubicua mi pequeño VAIO UX corriendo Ubuntu 12.04 desde otro ordenador cliente.

Mi idea era que cualquiera pudiera estar utilizando el PC del que quiero tomar el control de forma normal y, a la par, poder acceder yo a él a través de otra sesión para no interferir en el uso principal que el otro usuario esté haciendo de ese ordenador (todos sabemos que cuando controlamos otro ordenador a través de VNC, el usuario principal pierde el control del servidor a la vez que ve todo lo que hace el invitado en la pantalla). Mi idea no era esa.

Así que me puse manos a la obra. Sabía que lo que quería desarrollar se podía hacer (tengo uno de mis servidores configurado de esa forma, aunque ese tiene instalado GDM -Gnome Display Manager-), pero nunca lo había hecho con Lightdm... y por lo que vi, no hay mucha documentación. Muchos aquí diréis, bueno, utiliza X11vnc server, que además funciona "out of the box"... sí, pero no soporta múltiples usuarios, así que no me sirve.
Empezamos.
1) Abre la terminal e instala vnc4server:
sudo apt-get install vnc4server

2) Instala GDM (sí, curiosamente el poder controlar de nuevo nuestra máquina a través de VNC pasa por volver a instalar GDM :/
Pon mucha atención en este punto, ya que se te pedirá que selecciones el gestor de sesiones por defecto, en donde deberás elegir "Lightdm"
sudo apt-get install gdm

Recuerda, cuando te pida elegir qué gestor de sesiones quieres elegir, selecciona "Lightdm"
3) A continuación verificamos que tenemos instalado la barra de tareas y el lanzador de aplicaciones "gnome-panel"
sudo apt-get install gnome-panel

4) A continuación, cuando ejecutes por primera vez "vnc4server", se te pedirá que introduzcas la contraseña con la que accederás a la sesión remota. Recuerda apuntarla. Abrimos una terminal y lanzamos "vnc4server"
vnc4server

Introducimos la contraseña que elijamos y la verificamos introduciéndola por segunda vez.
5) A la vez que generamos la contraseña de acceso a la sesión remota, "vnc4server" creará también el fichero de configuración de la sesión en "/home/nombre_de_usuario/.vnc/xstartup" (cuando accedas a este fichero a través de Nautilus, recuerda pulsar la combinación de teclas "ctrl+h" para poder ver los recursos ocultos que comienzan por un "."). Aquí es de absoluta importancia tener bien configurado el servidor VNC mediante un fichero "xstartup" adecuado. Mi recomendación es que copies y pegues el contenido que te dejo a continuación si no sabes muy bien lo que significa cada variable:

#!/bin/sh
# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
#exec /etc/X11/xinit/xinitrc
#. /etc/X11/xinit/xinitrc
gnome-session  --session=ubuntu-2d &
[ -x /etc/vnc/xstartup ] & exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] & xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
#x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &


Lo que he cambiado con respecto a los valores predeterminados es lo siguiente:
  • unset SESSION_MANAGER: he desmarcado esta opción para evitar errores del tipo "Could not acquire name on session bus"
  • unset DBUS_SESSION_BUS_ADDRESS: también desmarcada para poder ganar permisos root a través de la sesión remota.
  • En la ruta "/usr/share/gnome-session/sessions" podrás ver cada uno de los entornos gráficos en los que podrás acceder remotamente, y que vienen determinados por los ficheros .session que a su vez tienen su correspondencia con la variable "gnome-session  --session=" del fichero xstartup. Puedes usar cualquiera de estos entornos en tu sesión remota:
gnome-session –session=gnome-classic & -> Accedes con el entorno Gnome Classic.
gnome-session –session=ubuntu-2d & -> Accedes con Unity 2D.
gnome-session –session=ubuntu & -> No sé por qué, pero no funciona.
gnome-session –session=gnome-session & -> Tampoco funciona porque la sesión por defecto ya es "ubuntu"

Elegid el entorno que mejor se adapte a vuestras necesidades y controlad cualquier ordenador de vuestra red.
A partir de aquí sólo os resta instalar un cliente VNC en el PC (Reminna funciona perfectamente en Ubuntu) o incluso en un terminal Android y configurarlo con la IP del servidor donde has instalado vnc4server, el usuario con el que accedes a tu sesión de Ubuntu y la contraseña que has definido al instalar vnc4server.
Una vez que empecéis a usarlo veréis lo útil que resulta para realizar cualquier tarea de forma remota.