Ir para o conteúdo

VNC

De RJGSWiki

VNC[editar]

X11VNC[editar]

Instalação no Ubuntu[editar]

Para instalar use o comando:

sudo apt-get install x11vnc -y

Para criar a senha:lembre-se de mudar SEU_PASSWORD pela senha correspondente

sudo x11vnc -storepasswd SEU_PASSWORD /etc/x11vnc.pass 

Para dar permissão ao arquivo de senha:

sudo chmod 744 /etc/x11vnc.pass 

O comando a seguir vai rodar o X11vnc

sudo x11vnc -auth /var/run/lightdm/root/:0 -noxrecord -noxfixes -noxdamage -rfbauth /etc/x11vnc.pass -forever -bg -rfbport 5900 -o /tmp/x11vnc.log 

Script para instalar e iniciar[editar]

Crie um arquivo com a extensão ".sh" contendo esse conteúdo abaixo

vim script_vnc.sh
#!/bin/bash

echo "################################"
echo "### INICIANDO O SERVIDOR VNC ###"
echo "################################"
echo " "
################################
### Declaração de Variáveis
VNC_IP="$(hostname -I | awk '{print $1}')"
################################

################################
### Verificação e instalação do VNC

# Verifica se o x11vnc está instalado
if ! command -v x11vnc >/dev/null 2>&1; then
    echo "x11vnc não está instalado. Instalando..."

    # Atualiza repositórios (opcional, mas recomendado)
    sudo apt update

    # Instala o x11vnc
    sudo apt install -y x11vnc

    echo "x11vnc instalado com sucesso!"
else
echo " "
echo "### Insira a Senha do acesso VNC Client:"
echo " "
read VNC_SENHA
#
sudo x11vnc -storepasswd $VNC_SENHA /etc/x11vnc.pass
#
echo " "
echo "### Iniciando o servidor VNC"
echo " "
#
sudo x11vnc -auth /var/run/lightdm/root/:0 -noxrecord -noxfixes -noxdamage -rfbauth /etc/x11vnc.pass -forever -bg -rfbport 5900 -o /tmp/x11vnc.log
fi
sleep 5
#
echo " "
echo "#################################################"
echo "### Seu servidor de VNC está instalado e rodando."
echo "### Para acessar esse computador:                "
echo "### IP...: $VNC_IP                               "
echo "### Porta: 5900                                  "
echo "### Senha: $VNC_SENHA                            "
echo "#################################################" 
echo " "

Depois de criar e salvar, dê permissões

sudo chmod +x script_vnc.sh

Rode o script

./script_vnc.sh

Script para iniciar junto com o sistema[editar]

Bom, até aí o aplicativo vai funcionar direitinho. Contudo, após reiniciar a máquina ele não mais estará rodando. Para fazer com que o programa inicie com o Sistema Operacional, será necessário criar um script dentro de /etc/init.d/, dar permissão de execução e executar o comando "update-rc.d" para fazer com que isso aconteça.

Criar o arquivo /etc/init.d/vnc-server

sudo vim /etc/init.d/vnc-server 

adicionar as linhas de comando dentro do arquivo:

#!/bin/bash
 
start() {
    echo "Iniciando VNC-Server..."
    x11vnc -env FD_XDM=1 -display :0 -forever -rfbauth /root/.vncpasswd &>> /var/log/vnc-server.log &
    echo "[OK]"
}
 
stop() {
    echo "Desligando VNC-Server..."
    killall x11vnc &>> /var/log/vnc-server.log
    echo "[OK"]
}
    case "$1" in
    start) start
    ;;
    stop) stop
    ;;
    restart) stop; start
    ;;
    *) echo "Uso correto: (start|stop|restart)"
    ;;
esac

Para dar permissão de execução para ao script:

chmod +x /etc/init.d/vnc-server 

Agora, vamos temos que colocar o script para iniciar com o sistema:

cd /etc/init.d/ 
update-rc.d vnc-server defaults 

O x11vnc já está configurado para iniciar com o sistema e você pode fazer o STOP e START com os comandos abaixo:

Operação do Daemon[editar]

/etc/init.d/vnc-server start 
/etc/init.d/vnc-server stop 
/etc/init.d/vnc-server restart 

Caso você não precise mais que ele suba junto com o sistema operacional, faça o comando abaixo:

cd /etc/init.d/ 
update-rc.d -f vnc-server remove 

A porta padrão de execução do VNC é a 5900

Para iniciar

/etc/init.d/vnc-server 

crie um script com o comando acima

#!/bin/bash
#
/etc/init.d/vnc-server

xtightvncviewer[editar]

O que é?[editar]

Cliente visualizador X para VNC é um aplicativo cliente baseado em Xt para o sistema VNC (Virtual Network Computing). Ele pode se conectar a qualquer servidor compatível com VNC, como o Xvnc ou o WinVNC, permitindo controlar o ambiente de trabalho de outra máquina.

Sintaxe[editar]

vncviewer [opções] [host][:display]
vncviewer [opções] [host][::porta]
vncviewer [opções] -listen [display]
vncviewer -help

Você pode usar F8 para exibir um menu pop-up de utilidades. Pressione F8 duas vezes para enviar apenas um F8 para o lado remoto.

opções[editar]

  • -help: Exibe um breve aviso de uso no stderr.
  • -listen: Faz o visualizador escutar na porta 5500+display para conexões reversas de um servidor. O WinVNC suporta conexões reversas usando a opção de menu "Add New Client" ou a opção de linha de comando -connect. O Xvnc requer o uso do programa auxiliar vncconnect.
  • -via gateway: Cria automaticamente um túnel TCP criptografado para a máquina gateway antes da conexão, conectando-se ao host por meio desse túnel (específico do TightVNC). Por padrão, essa opção invoca o encaminhamento de porta local do SSH, assumindo que o cliente SSH está disponível em /usr/bin/ssh. Ao usar -via, o nome do host deve ser especificado conforme conhecido pelo gateway. Por exemplo, “localhost” se refere ao gateway, não à máquina onde o vncviewer foi iniciado. Veja a seção ENVIRONMENT abaixo para informações sobre como configurar a opção -via.
  • -shared: Solicita uma conexão compartilhada ao conectar. No TightVNC, este é o modo padrão, permitindo compartilhar a área de trabalho com outros clientes já conectados.
  • -noshared: Especifica que a sessão não pode ser compartilhada. Isso pode desconectar outros clientes conectados ou recusar sua conexão, dependendo da configuração do servidor.
  • -viewonly: Desativa o envio de eventos de mouse e teclado do cliente para o servidor.
  • -fullscreen: Inicia em modo tela cheia. Este modo pode causar problemas com window managers X, como perda de foco de entrada ou desaparecimento da janela. Veja grabKeyboard na seção RESOURCES para solução.
  • -noraiseonbeep: Por padrão, o visualizador exibe e traz a janela para frente quando há um beep remoto. Esta opção desativa esse comportamento (específico do TightVNC).
  • -passwd arquivo-senha: Arquivo do qual obter a senha (gerada pelo programa vncpasswd(1)). Afeta apenas a autenticação padrão do VNC.
  • -encodings lista-encodes: Define métodos de compressão para atualizações de tela, em ordem de preferência. Encodes devem ser separados por espaços (coloque entre aspas se houver mais de um). Padrão para conexão remota: "copyrect tight hextile zlib corre rre raw". Padrão para conexão local: "raw copyrect tight hextile zlib corre rre".
  • -bgr233: Sempre usa o formato BGR233 para codificar dados de pixel (8 bits: 2 azul, 3 verde, 3 vermelho). Menos tráfego, mas menor fidelidade de cor.
  • -owncmap: Tenta usar um visual PseudoColor e um mapa de cores próprio, permitindo que o servidor controle o mapa de cores.
  • -truecolour ou -truecolor: Tenta usar um visual TrueColor.
  • -depth profundidade: Define profundidade (bits por pixel) para servidores X com múltiplos visuais TrueColor.
  • -compresslevel nível: Nível de compressão (0 a 9) para encodes "tight" e "zlib". Níveis mais altos = melhor compressão, mais uso de CPU.
  • -quality nível: Qualidade JPEG (0 a 9) para encoding "tight". 0 = pior qualidade, melhor compressão; 9 = melhor qualidade, menos compressão.
  • -nojpeg: Desativa compressão JPEG no encoding Tight (não recomendado, exceto para qualidade perfeita).

-nocursorshape: Desativa atualizações de forma do cursor.

  • -x11cursor:  Usa cursor real do X11 em vez de desenhar no framebuffer.
  • -autopass: Lê senha em texto puro da entrada padrão (stdin).

Codificações[editar]

Explica formatos de pixel (TrueColor, mapa de cores) e métodos de codificação (Raw, CopyRect, RRE, CoRRE, Hextile, Zlib, Tight), com vantagens e casos de uso para cada.

Recursos[editar]

Lista variáveis X resources que correspondem às opções de linha de comando, como shareDesktop, viewOnly, fullScreen, grabKeyboard, passwordFile, encodings, compressLevel, qualityLevel, enableJPEG, useRemoteCursor, etc.

Variáveis de ambiente[editar]

Explica o uso da variável VNC_VIA_CMD ao usar -via, incluindo padrões como:

/usr/bin/ssh -f -L %L:%H:%R %G sleep 20

E o significado de %G, %H, %L, %R.

Fontes[editar]