VNC

Virtual Network Computing (VNC) es un sistema que permite controlar un computador remoto de forma gráfica mediante el protocolo RFB.
TightVNC, Vino y X11vnc son algunos de los programas de acceso remoto por VNC disponibles para Linux. En este post hablaré de TightVNC.
Instala
TightVNC:julio@julio-acer ~ $ sudo pacman -S tightvncCrea los archivos iniciales y define una contraseña de acceso
julio@julio-acer ~ $ vncserver :1 You will require a password to access your desktops. Password: Verify: Would you like to enter a view-only password (y/n)? n New 'X' desktop is julio-acer:1 Creating default startup script /home/julio/.vnc/xstartup Starting applications specified in /home/julio/.vnc/xstartup Log file is /home/julio/.vnc/julio-acer:1.logPor defecto, el servidor correrá en el puerto TCP 5900+n, donde n es el número del display.
Para iniciar la configuración, mata el servidor que está corriendo
julio@julio-acer ~ $ vncserver -kill :1Edita el archivo de configuración, de forma similar a
.xinitrcjulio@julio-acer ~ $ vim ~/.vnc/xstartup #!/bin/sh export XKL_XMODMAP_DISABLE=1 #Evita error al mapear el teclado exec startxfce4 #exec awesomePor seguridad, permite solo conexiones locales; así, si alguien quiere conectarse remotamente, deberá autenticarse por SSH.
Para permitir solo conexiones locales, inicia
vncservercon la opción-localhost:vncserver -localhost :1Iniciar y finalizar el servidor VNC automáticamente
Iniciar servidor VNC al encender el equipo:
julio@julio-acer ~ $ sudo vim /etc/rc.local su julio -c "vncserver -localhost :1"Apagar servidor VNC al apagar el equipo:
julio@julio-acer ~ $ sudo vim /etc/rc.local.shutdown su julio -c "/usr/bin/vncserver -kill :1"
Conectando desde otro computador
$ ssh -p 22 julio@casa.juliobs.com -L 8900/localhost/5901
Donde puse -p 22, cambia al puerto que uses para SSH. La opción -L hace el tunneling SSH. Luego
ejecuta vncviewer localhost:8900.
Conectando desde el iPhone
La app iSSH puede conectarse por VNC directamente (RAW), pero como ya expliqué, es más seguro hacer SSH tunneling.
Abre
iSSHVe a
Add Configuration…y deja algo similar a:(imagen indisponible)Vuelve a la pantalla inicial y elige la configuración que creaste.
(imagen indisponible)Como estamos usando un iPhone 3G, con resolución 480x320 (el iPhone 4 tiene 960x640), puede ser interesante configurar
TightVNCpara redimensionar la pantalla y ver todo el entorno.Inicia el servidor con la opción
-geometry. Para modo paisaje:julio@julio-acer ~ $ vncserver -localhost -geometry 480x268 :1Quité unos 52 píxeles de altura para compensar la barra superior.
Para modo retrato:
julio@julio-acer ~ $ vncserver -localhost -geometry 320x416 :1
A veces quiero controlar el mismo display que se ve en el equipo remoto, o solo monitorear programas
que están corriendo. Eso no es posible con TightVNC, pero sí con X11vnc.
Instala X11vnc
julio@julio-acer ~ $ sudo pacman -S x11vncSi quieres, define un
.Xauthorityjulio@julio-acer ~ $ x11vnc -display :0 -auth ~/.XauthorityDefine una contraseña
julio@julio-acer ~ $ mkdir ~/.x11vnc julio@julio-acer ~ $ x11vnc -storepasswd su_contraseña_aqui ~/.x11vnc/passwd stored passwd in file: /home/julio/.x11vnc/passwdIgual que en
TightVNC, usa la opción-localhostpor seguridad.Resumiendo, el servidor VNC puede iniciarse con el siguiente script, que quizá quieras poner en
.xinitrc:julio@julio-acer ~ $ x11vnc -localhost -many -display :0 -auth ~/.Xauthority &>/dev/null &La opción
-manyevita que el servidor se apague al finalizar la sesión.Accede por túnel SSH
julio@servidor ~ $ ssh -p 22xx -t -L 5900:localhost:5900 casa.juliobs.com 'sudo x11vnc -display :0 -auth /home/julio/.Xauthority'El acceso desde iPhone es igual que con
TightVNC, pero usando el puerto5900.
Problemas:
Aparentemente TightVNC no soporta RandR, necesario para cambiar resolución y abrir algunos
programas como Chromium y Firefox. Hay parches en Internet. Otro programa que parece soportar
RandR es RealVNC.
Enlaces

Soy un ingeniero informático brasileño radicado en Alemania, apasionado por la tecnología, la ciencia, la fotografía y los idiomas.
Llevo programando cerca de dos décadas, explorando desde apps móviles y desarrollo web hasta aprendizaje automático. Hoy me enfoco en SRE en la nube e ingeniería de datos.
Soy voluntario en las comunidades de open source y Python, ayudando a organizar PyCon DE y PyData Berlin, dando mentorías y contribuyendo con código y traducciones.
En mi blog comparto consejos de Linux, guías de configuración y notas personales que escribí como referencia futura. Espero que también sean útiles para otras personas. El contenido está disponible en varios idiomas.
Visita mi galería para ver algunas de mis fotografías.
Fuera del teclado, me encontrarás en conciertos, tocando el clarinete, en bicicleta, buceando o explorando nuevos lugares, culturas y cocinas.
¡Siempre feliz de conectar! 🙂