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 tightvnc
-
Crie 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.log
Por 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 :1
-
Edite 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 awesome
-
Por 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
vncserver
com a opção-localhost
:vncserver -localhost :1
-
Iniciar 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
iSSH
-
Vá 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
TightVNC
para 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 :1
Tirei 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 x11vnc
-
Se quiser, defina um
.Xauthority
julio@julio-acer ~ $ x11vnc -display :0 -auth ~/.Xauthority
-
Defina uma senha
julio@julio-acer ~ $ mkdir ~/.x11vnc julio@julio-acer ~ $ x11vnc -storepasswd sua_senha_aqui ~/.x11vnc/passwd stored passwd in file: /home/julio/.x11vnc/passwd
-
Assim como no
TightVNC
, use a opção-localhost
por 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
-many
evita 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
.