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.