VNC

Virtual Network Computing (VNC) é um sistema que permite controlar um computador remoto de forma gráfica pelo protocolo RFB.
TightVNC, Vino e X11vnc são alguns dos programas de acesso remoto por VNC disponíveis para Linux. Neste post falarei do TightVNC.
Instale o
TightVNC:julio@julio-acer ~ $ sudo pacman -S tightvncCrie os arquivos iniciais e defina uma senha de acesso
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 padrão, o servidor rodará na porta TCP 5900+n, onde n é o número do display.
Para iniciar as configurações, mate o servidor que está rodando
julio@julio-acer ~ $ vncserver -kill :1Edite o arquivo de configuração, de forma semelhante ao .xinitrc
julio@julio-acer ~ $ vim ~/.vnc/xstartup #!/bin/sh export XKL_XMODMAP_DISABLE=1 #Evita erro ao mapear o teclado exec startxfce4 #exec awesomePor segurança, permita apenas conexões locais, para que, se alguém quiser conectar ao computador remotamente, terá que autenticar por ssh.
Para permitir apenas conexões locais, basta iniciar o
vncservercom a opção-localhost:vncserver -localhost :1Iniciar e finalizar o servidor VNC automaticamente
Inicia servidor VNC ao ligar o computador:
julio@julio-acer ~ $ sudo vim /etc/rc.local su julio -c "vncserver -localhost :1"Desliga servidor VNC ao desligar o computador:
julio@julio-acer ~ $ sudo vim /etc/rc.local.shutdown su julio -c "/usr/bin/vncserver -kill :1"
Conectando por outro computador
$ ssh -p 22 julio@casa.juliobs.com -L 8900/localhost/5901
Onde coloquei -p 22, mude a porta para o número que você usa para SSH. A opção -L faz o
tunneling SSH. Depois execute vncviewer localhost:8900.
Conectando pelo iPhone
O APP iSSH possui a opção de conectar por VNC diretamente (RAW), mas como já explicado, é mais seguro fazer SSH tunneling.
Abra o
iSSHVá em
Add Configuration…e deixe parecido com a seguinte configuração:(imagem indisponível)Volte na tela inicial do programa e escolha a configuração que você acabou de criar.
(imagem indisponível)Já que estamos usando um iPhone 3G, com resolução 480x320 (o iPhone 4 possui tela 960x640), pode ser interessante configurar o
TightVNCpara redimensionar a tela para conseguirmos uma visão completa do ambiente.Inicie o servidor com a opção
-geometry. Para visão modo paisagem:julio@julio-acer ~ $ vncserver -localhost -geometry 480x268 :1Tirei uns 52 pixels da altura, para compensar a parte de cima da tela.
Para visão modo retrato:
julio@julio-acer ~ $ vncserver -localhost -geometry 320x416 :1
Algumas vezes também quero poder controlar o mesmo display que está sendo exibido no computador
remoto, ou simplesmente monitorar os programas que estão rodando. Isso não é possível pelo
TightVNC, mas é facilmente feito pelo X11vnc.
Instale o X11vnc
julio@julio-acer ~ $ sudo pacman -S x11vncSe quiser, defina um
.Xauthorityjulio@julio-acer ~ $ x11vnc -display :0 -auth ~/.XauthorityDefina uma senha
julio@julio-acer ~ $ mkdir ~/.x11vnc julio@julio-acer ~ $ x11vnc -storepasswd sua_senha_aqui ~/.x11vnc/passwd stored passwd in file: /home/julio/.x11vnc/passwdAssim como no
TightVNC, use a opção-localhostpor segurança.Resumindo, o servidor VNC pode ser acessado pelo seguinte script, que você pode querer colocar no
.xinitrc:julio@julio-acer ~ $ x11vnc -localhost -many -display :0 -auth ~/.Xauthority &>/dev/null &A opção
-manyevita que o servidor desligue quando você finaliza a sessão.Acesse pelo túnel SSH
julio@servidor ~ $ ssh -p 22xx -t -L 5900:localhost:5900 casa.juliobs.com 'sudo x11vnc -display :0 -auth /home/julio/.Xauthority'O acesso pelo iPhone é exatamente da mesma forma que o
TightVNC, mas aqui usamos a porta5900.
Problemas:
Aparentemente o tightVNC não suporta RandR, que é necessário para mudarmos a resolução da tela e
abrir alguns programas como o Chromium e Firefox. Existem alguns patches na internet para resolver o
problema. Um outro programa que parece suportar RandR é o RealVNC.
Links

Sou um engenheiro de computação brasileiro baseado na Alemanha, apaixonado por tecnologia, ciência, fotografia e línguas.
Programo há cerca de duas décadas, explorando desde aplicativos móveis e desenvolvimento web até aprendizado de máquina. Atualmente, foco em SRE de nuvem e engenharia de dados.
Sou voluntário nas comunidades de open source e Python, ajudando a organizar a PyCon DE e a PyData Berlin, mentorando e contribuindo com código e traduções.
No meu blog, compartilho dicas de Linux, guias de configuração e notas pessoais que escrevo para referência futura. Espero que outras pessoas também as considerem úteis. O conteúdo está disponível em vários idiomas.
Visite minha galeria para ver algumas das minhas fotografias.
Longe do teclado, você vai me encontrar em shows, tocando clarinete, pedalando, mergulhando ou explorando novos lugares, culturas e culinárias.
Sempre feliz em me conectar! 🙂