O Virtual Network Computing (VNC) é um sistema de compartilhamento de tela usado para acessar interfaces gráficas de usuário remotamente. Ele usa o protocolo remote frame buffer, permitindo que um servidor (lado do usuário) se conecte a outro lado (cliente). O VNC é seguro, protegido e funciona em todos os sistemas operacionais.
RealVNC, UltraVNC, Xfce, TightVNC, para citar alguns, são os clientes VNC mais populares usados hoje. Entre a lista de alternativas disponíveis, você está livre para escolher qualquer VNC de sua preferência. Neste tutorial, vamos orientá-lo nas etapas de instalação e configuração do VNC no Ubuntu 20.04. Nós vamos instalar Xfce por causa de sua velocidade, leveza e excelente desempenho.
Começaremos configurando um servidor VNC em um servidor Ubuntu e estabelecendo uma conexão segura através do túnel SSH. Finalmente, usaremos um programa cliente VNC em nossa máquina local para interagir com o servidor através de um ambiente de desktop gráfico.
Pré-requisitos
Para seguir este tutorial, você precisará de:
-
Um servidor Ubuntu 20.04 com um usuário não-root e um firewall descomplicado (UFW).
-
Um computador local com um cliente VNC instalado. Além disso, o cliente VNC que usaremos se conecta através de túneis SSH.
Passo 1 — Instalar o Ambiente de Desktop e o Servidor VNC
Ao contrário das versões anteriores do Ubuntu, o Ubuntu 20.04 não vem com um VNC pré-instalado. Como primeiro passo, instalaremos os pacotes necessários a partir do repositório oficial do Ubuntu. Antes de prosseguir, vamos atualizar os pacotes existentes:
|
1 |
sudo apt update |
Agora instalaremos o Xfce e o pacote xfce4-goodies usando o comando:
|
1 |
sudo apt install xfce4 xfce4-goodies |
Enquanto o seu pacote está sendo instalado, você verá uma tela solicitando que escolha um gerenciador de exibição padrão para o Xfce. Ignore a mensagem ou defina-o como padrão e, em seguida, pressione ENTER.
Um gerenciador de exibição é um programa que permite aos usuários fazer login em um ambiente de desktop por meio de uma interface gráfica. Neste tutorial, usaremos o Xfce ao conectar com um cliente VNC onde estamos logados como um usuário Ubuntu não-root. Portanto, a escolha do gerenciador de exibição não terá nenhum impacto em nossa instalação.
Após a instalação do Xfce, instalaremos o servidor TightVNC:
|
1 |
sudo apt instalar tightvncserver |
No próximo passo, use o vncserver comando para definir uma senha de acesso VNC e criar os arquivos de configuração iniciais. Digite o seguinte para iniciar a instância do servidor VNC:
|
1 |
vncserver |
Depois disso, defina uma senha de 6 a 8 caracteres e pressione ENTER. Você verá uma mensagem de prompt:
|
1 2 3 4 5 |
Saída Você irá precisar de uma senha para acessar seus desktops. Senha: Confirmar: |
No futuro, se desejar alterar sua senha ou adicionar uma senha de apenas visualização, use o comando:
|
1 |
vncpasswd |
A esta altura, você já terá todas as configurações padrão criadas para o servidor, e uma porta de exibição 5901 iniciada como :1. O VNC pode iniciar múltiplas instâncias em outras portas de exibição como :2, :3, e :4 referindo-se à porta 5902, 5903, e 5904 respectivamente:
|
1 2 3 4 5 6 7 8 9 |
Saída Gostaria você gostar de inserir uma visualização-apenas senha (s/n)? n xauth: arquivo /home/cloudsigma/.Xauthority não não existe Nova 'X' área de trabalho é your_hostname:1 Criando padrão inicialização script /home/cloudsigma/.vnc/xstartup Iniciando aplicativos especificados em /home/cloudsigma/.vnc/xstartup Log arquivo está /home/cloudsigma/.vnc/your_hostname:1.log |
Seu servidor VNC está agora instalado e em execução com sucesso. No próximo passo, vamos configurar o servidor para iniciar o Xfce para obter acesso através da interface gráfica.
Passo 2— Configurar o Servidor VNC
No diretório home, você encontrará a .vnc pasta que contém todos os arquivos de configuração chamados startup. Inicialmente, você encontrará o arquivo startup em execução, que foi criado automaticamente quando executamos o comando vncserver no Passo-1. O script de inicialização foi criado quando você executou o vncserver comando no passo anterior. No entanto, agora você criará o seu próprio para iniciar a área de trabalho Xfce. Também teremos que criar nosso próprio servidor para iniciar a área de trabalho Xfce porque a configuração do VNC mudará.
Antes de prosseguir, temos que parar a instância do servidor VNC em execução na porta 5901:
|
1 |
vncserver -kill :1 |
Você verá a saída:
|
1 2 |
Saída Encerrando Xtightvnc processo ID 17648 nano ~/.vnc/xstartup |
Em vez de 17648, você pode obter um número diferente e tudo bem. Em seguida, vamos modificar o xstartup arquivo. Antes de fazer qualquer modificação no arquivo, vamos fazer o backup do arquivo original:
|
1 |
mv ~/.vnc/xstartup ~/.vnc/xstartup.bak |
Em seguida, crie um novo xstartup arquivo e abra-o em qualquer editor de texto. Neste tutorial, estamos usando nano:
|
1 |
nano ~/.vnc/xstartup |
Depois de concluído, adicione as seguintes linhas ao arquivo:
|
1 2 3 |
#!/bin/bash xrdb $HOME/.Xresources startxfce4 & |
Sempre que você iniciar ou reiniciar o servidor VNC, esses comandos serão executados automaticamente. A primeira linha é Shebang que informa o sistema sobre as informações do intérprete para passar o ~/.vnc/xstartup arquivo para execução. A próxima linha xrdb $HOME/. Xresources, informa o framework GUI do VNC a ler o arquivo Xresources do usuário do servidor. Finalmente, a última linha solicita ao servidor que inicie o Xfce. Depois de adicionar essas linhas, salve e feche o arquivo.
Precisamos tornar o arquivo executável para que o servidor VNC possa usar o novo arquivo de inicialização:
|
1 |
chmod +x ~/.vnc/xstartup |
Em seguida, reinicie o servidor VNC:
|
1 |
vncserver -localhost |
Agora você terá o -localhost opção adicionada aqui. O localhost vincula o servidor VNC à interface de loopback do seu servidor, permitindo conexões apenas de servidores instalados. Em seguida, estabeleceremos um túnel SSH entre nossa máquina local e o servidor. O objetivo é adicionar uma camada extra de segurança ao redor do VNC. Por quê? É porque os usuários que terão acesso serão aqueles que já possuem acesso SSH ao servidor.
Você verá a seguinte saída:
|
1 2 3 4 |
Novo 'X' desktop é your_hostname:1 Iniciando aplicativos especificados em /home/sammy/.vnc/xstartup Log arquivo é /home/cloudsigma/.vnc/your_hostname:1.log |
Depois que a configuração estiver definida, estaremos prontos para nos conectar ao servidor VNC a partir da nossa máquina local.
Passo 3 — Conectar-se com segurança ao desktop VNC
Ao se conectar ao servidor, o VNC não usa protocolos seguros. Portanto, precisamos estabelecer um túnel SSH e solicitar que o cliente VNC faça uma conexão usando o túnel, em vez de permitir que ele faça uma conexão direta por conta própria.
Criaremos uma conexão SSH em nosso computador local usando o ssh comando que encaminha para a localhost conexão. Use o comando no terminal para criar uma conexão SSH:
|
1 |
ssh -L 59000:localhost:5901 -C -N -l cloudsigma ip_do_seu_servidor |
Vamos decifrar o código acima:
-
-L 59000:localhost:5901: O -L parâmetro especifica que a porta fornecida no computador local ( 59000) será direcionada para o host e porta fornecidos no servidor de destino ( localhost:5901). Isso significa que a porta 5901 no servidor de destino será definida como ip_do_seu_servidor). A porta local que você especificar é arbitrária. Desde que a porta não esteja vinculada a outro serviço, você está livre para usá-la como a porta de encaminhamento para o seu túnel.
-
-C: Ativa a compressão, o que ajuda ainda mais a minimizar o consumo de recursos e a acelerar o desempenho.
-
-N: Útil para encaminhamento de portas. Isso informa ssh a não executar nenhum comando remoto.
-
-l cloudsigma your_server_ip: O -l parâmetro permite que você especifique o usuário com o qual deseja fazer login após se conectar ao servidor.
O comando acima é uma maneira mais segura de estabelecer uma conexão segura do que apenas abrir o firewall do seu servidor para permitir conexões com a porta 5901 de qualquer lugar. Assim que você fizer a conexão, o túnel SSH encaminha o conteúdo da porta 5901 no seu VNC para a porta 59000 na sua máquina local através da porta SSH padrão; porta 22.
Você também pode usar PuTTY para conectar ao seu servidor. Abra o PuTTY, vá para o lado esquerdo do terminal do PuTTY e encontre a ramificação Connection para se conectar. Em seguida, expanda a ramificação SSH e clique em Tunnels. Na tela Options controlling SSH port forwarding screen, insira 59000 como a Porta de Origem e localhost:5901 como o Destino:

Mantenha todas as opções inalteradas, clique em Adicionar, e depois em Aplicar para implementar o túnel. Assim que o túnel iniciar, use um cliente VNC para se conectar a localhost: 59000. Por padrão, você será solicitado a se autenticar usando a senha que criamos no Passo-1. Assim que se conectar, você verá a área de trabalho padrão do Xfce:

Você pode acessar e gerenciar arquivos no diretório home. Além disso, configure seu servidor VNC para ser executado como um serviço do systemd.
Passo 4 — Executar o VNC como um Serviço do Systemd
Configurar o servidor VNC para ser executado como um serviço do systemd permite o gerenciamento do servidor. Você pode iniciar, parar, reiniciar ou encerrar, conforme sua conveniência e necessidades. Sempre que o servidor for inicializado, você poderá usar os comandos de gerenciamento do systemd para verificar se o servidor está LIGADO ou DESLIGADO.
Primeiro, criaremos um novo arquivo de unidade para especificar a porta de exibição VNC que queremos usar ao gerenciar os serviços. Defina um arquivo de unidade:
|
1 |
sudo nano /etc/systemd/system/vncserver@.service |
Você encontrará o @ símbolo no final do nome do arquivo, que permite passar um argumento para usar a configuração do serviço.
Em seguida, adicione o conjunto de linhas ao arquivo de unidade. Renomeie o User, Group, WorkingDirectory, e o nome de usuário no valor de PIDFILE:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[Unidade] Descrição=Iniciar TightVNC servidor na inicialização Após=syslog.alvo rede.alvo [Serviço] Tipo=forking Usuário=cloudsigma Grupo=cloudsigma Diretório de Trabalho=/home/cloudsigma PIDFile=/home/cloudsigma/.vnc/%H:%i.pid ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=multi-user.target |
Se o VNC já estiver em execução, o ExecStartPre comando irá pará-lo. O ExecStart comando inicia o VNC e define a profundidade de cor para cores de 24 bits com uma resolução de 1280×800. Você pode editar essas opções de inicialização com base nos seus requisitos. Além disso, observe que o ExecStart comando inclui novamente a -localhost opção. Depois de concluído, salve e feche o arquivo de unidade.
Em seguida, apresente o novo arquivo de unidade ao seu sistema:
|
1 |
sudo sudo systemctl daemon-reload |
Ative ON o arquivo de unidade:
|
1 |
sudo systemctl enable vncserver@1.service |
O 1 a seguir ao @ sinal indica em qual número de tela o serviço deve aparecer. No nosso caso, é o padrão :1 como foi discutido no Passo-2. Se o VNC ainda estiver em execução, você pode parar a instância atual do servidor VNC usando o comando kill:
|
1 |
vncserver -kill :1 |
Em seguida, inicie-o como faria com qualquer outro serviço systemd:
|
1 |
sudo systemctl start vncserver@1 |
Você pode verificar se ele foi iniciado com este comando:
|
1 |
sudo systemctl status vncserver@1 |
Você verá a saída:
|
1 2 3 4 5 6 7 8 |
Saída vncserver@1.serviço - Iniciar TightVNC servidor na inicialização Carregado: carregado (/etc/systemd/system/vncserver@.serviço; habilitado; fornecedor predefinição: habilitado) Ativo: ativo (em execução) desde Qui 2020-05-07 17:23:50 UTC; 6s atrás Processo: 39768 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2) Processo: 39772 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS) Principal PID: 39795 (Xtightvnc) ... |
Seu servidor VNC já está pronto para ser usado sempre que o seu servidor for inicializado, e você pode gerenciá-lo com systemctl comandos como qualquer outro serviço do systemd. No entanto, você não verá nenhuma diferença no lado do cliente. Para reconectar, inicie o seu SSH túnel usando:
|
1 |
ssh -L 59000:localhost:5901 -C -N -l cloudsigma your_server_ip |
Você pode novamente fazer conexões usando seu cliente VNC para localhost:59000 com o seu servidor.
Conclusão
Inicialmente, configurar um servidor VNC pode parecer desafiador, especialmente quando você está tentando se conectar a um novo computador. Depois de estabelecer uma conexão confiável, trabalhar com um computador remoto será divertido e empolgante. Com um servidor VNC seguro ativo e em execução no seu servidor Ubuntu 20.04, você pode gerenciar facilmente seus recursos, arquivos, softwares e configurações com uma interface gráfica amigável. O uso excessivo de largura de banda é talvez uma desvantagem de usar o VNC. Você pode superar isso usando telas de baixa resolução e em tons de cinza para uma transferência mais rápida.
Boa computação!
Comentários
Nenhum comentário ainda. Seja o primeiro.