Olá, hoje o tema é VNC.
Antes de mais quero agradecer ao nosso colega Samuel Almeida por ter montado este post (texto e imagens) para o ArdePi. O crédito é todo dele e apreciamos muito a sua contribuição para o blog.
O que é
o VNC?
Virtual Network Computing é um protocolo para
acesso remoto com ambiente gráfico, por outras palavras, possibilita a
utilização do ambiente de trabalho do RPi remotamente, assim como o SSH permite
o acesso remoto ao terminal do RPi.
Nota: Como
o protocolo VNC é aberto, ou seja, os dados transmitidos não são encriptados
(com excepção da autenticação) este pequeno tutorial irá unicamente abordar a transmissão
deste protocolo por um túnel SSH, contornando assim esta vulnerabilidade.
Como
configurar um acesso VNC no RPI?
2 - Instalar o servidor de VNC, neste caso optou-se
pelo TightVNC
No terminal introduzir o seguinte código
sudo apt-get update
sudo apt-get install tightvncserver
3 - Criar uma password
tightvncserver
4 - Criar um script para começar o serviço no
arranque do sistema (opcional)
sudo nano
/etc/init.d/tightvncserver
Copiar o seguinte script
#!/bin/sh
### BEGIN INIT INFO
# Provides: tightvncserver
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/stop
tightvncserver
### END INIT INFO
### Customizethisentry
# Set the USER variable to
thenameoftheuser to starttightvncserverunder
export USER='pi'
### Endcustomizationrequired
eval cd ~$USER
case "$1" in
start)
su $USER -c
'/usr/bin/tightvncserver -geometry 1366x768 -localhost :1'
echo "StartingTightVNC server
for $USER "
;;
stop)
pkillXtightvnc
echo
"Tightvncserverstopped"
;;
*)
echo "Usage:
/etc/init.d/tightvncserver {start|stop}"
exit 1
;;
esac
exit 0
Ter em atenção nas linhas:
export USER='pi'
Se
o teu username não for o definido por
defeito alterar esta linha
su $USER -c
'/usr/bin/tightvncserver -geometry 1366x768 -localhost :1'
1366x768 é a resolução do ambiente gerado pelo VNC
que pode ser alterada livremente;
-localhost indica que o serviço será
unicamente acessível localmente, neste caso pelo servidor SSH
:1
é o número do ambiente gráfico. Este parâmetro pode ser alterado, mas mais à
frente temos de ter esta mudança em conta.
Para mudar a propriedade do ficheiro para o root
sudo chown root:root
/etc/init.d/tightvncserver
Para o ficheiro ficar executável
sudo chmod 755 /etc/init.d/tightvncserver
Para adicionar o script aos runlevelsdefaults
sudo update-rc.d tightvncserver defaults
Neste ponto convém reiniciar o RPi para confirmar que
o script funciona
sudo reboot
5 - Se não optaste pelo script para começar o
serviço no arranque do sistema, o código para iniciar o serviço é
vncserver -geometry 1366x768
-localhost :1
E o comando para terminar o serviço é
vncserver -kill :1
Para aceder ao RPi via VNC por um túnel SSH
Em ambiente Windows:
1 - Configurar o
túnel SSH. Com o Putty, a ligação é feita da mesma forma que em Aceder ao RPi por SSH com uma pequena mudança
Em que 5901 = 5900 + 1, neste caso é o número do
ambiente gráfico escolhido ou no script ou no comando para activar o serviço
VNC.
2 - Abrir a
ligação, clicando em “Open”
Em que 127.0.0.1 ou localhost é o endereço no
cliente onde o serviço VNC está acessível.
É :1 é novamente o número do ambiente de gráfico.
Em linux:
1 - No terminal
introduzir o seguinte comando
ssh pi@xxx.xxx.x.xx -L 5902:localhost:5901
Em que -L indica um túnel SSH, 5902 é o porto em que
o serviço VNC estará disponível no cliente (pode ser um outro porto ou até
mesmo 5901) e 5901 é o porto em que o RPi (servidor) está a difundir o serviço
VNC(5901 = 5900 + 1, neste exemplo foi o número do ambiente gráfico escolhido
ou no script ou no comando para activar o serviço VNC no RPi).
2 - Noutra
janela/tab do terminal introduzir
vncviewer localhost:2
Como
no comando anterior escolheu-se o 5902 então neste comando temos que indicar ao
vncviewer que o ambiente gráfico está num túnel SSH (localhost) no porto (5902-5900=2).
NOTA: O serviço VNC só estará disponível se a
ligação SSH estiver aberta.
Até uma próxima,
Autor: Samuel Almeida,
Editor: Rúben Marques
Sem comentários:
Enviar um comentário