Tutorial

Como-instalar-e-configurar-o VNC no Ubuntu 18.04

Published on December 12, 2019
Português
Como-instalar-e-configurar-o VNC no Ubuntu 18.04

Introdução

O Virtual Network Computing, ou VNC, é um sistema de conexão que permite que você use seu teclado e mouse para interagir com um ambiente gráfico da área de trabalho em um servidor remoto. Isso facilita o gerenciamento de arquivos, software e configurações em um servidor remoto para os usuários que ainda não se sentem confortáveis com a linha de comando.

Neste guia, você irá configurar um servidor VNC em um servidor Ubuntu 18.04 e se conectar a ele com segurança através de um túnel SSH. Você usará o TightVNC, um pacote de controle remoto rápido e leve. Esta escolha irá garantir que nossa conexão VNC será suave e estável mesmo em conexões de Internet mais lentas.

Pré-requisitos

Para completar este tutorial, será necessário:

Passo 1 — Instalando o Ambiente da Área de Trabalho e o Servidor VNC

Por padrão, um servidor Ubuntu 18.04 não vem com um ambiente gráfico de área de trabalho ou um servidor VNC instalado, então começaremos instalando eles. Especificamente, iremos instalar pacotes de ambiente de área de trabalho mais recentes, o Xfce e o pacote TightVNC disponíveis no repositório oficial do Ubuntu.

No seu servidor, atualize sua lista de pacotes:

  1. sudo apt update

Agora, instale o ambiente de área de trabalho Xfce no seu servidor:

  1. sudo apt install xfce4 xfce4-goodies

Uma vez que a instalação tiver terminada, instale o servidor do TightVNC:

  1. sudo apt install tightvncserver

Para completar a configuração inicial do servidor VNC após a instalação, utilize o comando vncserver para configurar uma senha segura e crie os arquivos de configuração iniciais:

  1. vncserver

Será solicitado que você digite e verifique uma senha para acessar sua máquina remotamente:

Output
You will require a password to access your desktops. Password: Verify:

A senha deve ter entre seis e oito caracteres. Senhas com mais de 8 caracteres serão truncadas automaticamente.

Uma vez verificada a senha, você terá a opção de criar uma senha somente para exibição. Usuários que fizerem login com a senha somente para exibição não poderão controlar a instância VNC com seus respectivos mouses ou teclados. Esta é uma opção útil se quiser demonstrar algo para outras pessoas utilizando seu servidor VNC, mas isso não é necessário.

Depois, o processo criará os arquivos necessários de configuração padrão e informações de conexão para o servidor:

Output
Would you like to enter a view-only password (y/n)? n xauth: file /home/sammy/.Xauthority does not exist New 'X' desktop is your_hostname:1 Creating default startup script /home/sammy/.vnc/xstartup Starting applications specified in /home/sammy/.vnc/xstartup Log file is /home/sammy/.vnc/your_hostname:1.log

Agora, vamos configurar o servidor VNC.

Passo 2 — Configurando o Servidor VNC

O servidor VNC precisa saber quais comandos executar quando ele iniciar. Especificamente, o VNC precisa saber a qual ambiente gráfico de área de trabalho ele deve se conectar.

Estes comandos estão localizados em um arquivo de configuração chamado de xstartup na pasta .vnc sob o seu diretório inicial. O script de inicialização foi criado quando você executou o vncserver no passo anterior, mas vamos criar o nosso próprio script para iniciar a área de tabalho Xfce.

Quando o VNC é configurado pela primeira vez, ele inicia uma instância de servidor padrão na porta 5901. Essa porta é chamada de porta de exibição e é referida pelo VNC como :1. O VNC pode iniciar várias instâncias em outras porta de exibição, como :2, :3 e assim por diante.

Uma vez que vamos alterar a configuração do servidor VNC, primeiramente, interrompa a instância do servidor VNC que estiver em execução na porta 5901 com o seguinte comando:

  1. vncserver -kill :1

O resultado deve se parecer com este, embora você veja um PID diferente:

Output
Killing Xtightvnc process ID 17648

Antes de modificar o arquivo xstartup, faça um back-up do original:

  1. mv ~/.vnc/xstartup ~/.vnc/xstartup.bak

Agora, crie um novo arquivo de xstartup e abra ele no seu editor de texto:

  1. nano ~/.vnc/xstartup

Os comandos neste arquivo são executados de maneira automática, sempre que você iniciar ou reiniciar o servidor VNC. Precisamos que o VNC inicie nosso ambiente de área de trabalho, caso ainda não tiver sido iniciado. Adicione esses comandos ao arquivo:

~/.vnc/xstartup
#!/bin/bash xrdb $HOME/.Xresources startxfce4 &

O primeiro comando no arquivo, xrdb $HOME/.Xresources diz ao framework GUI do VNC para ler o usuário do servidor..Xresources arquivo O .Xresources é onde um usuário pode fazer alterações em certas configurações do ambiente de trabalho gráfico, como as cores de terminal, temas de cursor e rendering de fontes. O segundo comando diz ao servidor para iniciar o Xfce, que é onde você encontrará todos os software gráficos necessários para gerenciar confortavelmente seu servidor.

Para garantir que o servidor VNC será capaz de usar esse novo arquivo de inicialização corretamente, precisaremos torná-lo executável.

  1. sudo chmod +x ~/.vnc/xstartup

Agora, reinicie o servidor VNC.

  1. vncserver

Você verá um resultado semelhante a este:

Output
New 'X' desktop is your_hostname:1 Starting applications specified in /home/sammy/.vnc/xstartup Log file is /home/sammy/.vnc/your_hostname:1.log

Com a configuração implementada, vamos conectar nossa máquina local ao servidor.

Passo 3 — Conectando a área de trabalho do VNC com segurança

O VNC propriamente dito não utiliza protocolos de segurança ao se conectar. Utilizaremos um túnel SSH para conectar ao nosso servidor com segurança. Em seguida, diremos ao nosso cliente VNC para usar aquele túnel e não fazer uma conexão direta.

Crie uma conexão SSH no seu computador local; ela encaminhará a conexão localhost para o VNC. É possível fazer isto através do terminal no Linux ou no macOS com o seguinte comando:

  1. ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip

O switch -L especifica as ligações de porta. Neste caso, estamos ligando a porta 5901 da conexão remota à porta 5901 de sua máquina local. O switch -C habilita a compressão, enquanto o switch -N diz ao ssh que não queremos executar um comando remoto. O switch -l especifica o nome de login remoto.

Lembre-se de substituir o sammy e o your_server_ip pelo nome de usuário não raiz de comando sudo e o endereço IP do seu servidor.

Se estiver usando um cliente SSH gráfico, como o PuTTY, utilize o your_server_ip como a conexão IP e defina o localhost:5901 como uma nova porta encaminhada nas configurações de túnel SSH do programa.

Assim que o túnel estiver em execução, utilize um cliente VNC para se conectar ao ``localhost:5901. Será solicitado que autentique usando a senha definida no Passo 1.

Uma vez que estiver conectado, verá o área de trabalho padrão Xfce. Ela deve se parecer com isto:

VNC connection to Ubuntu 18.04 server​​​​​​

É possível acessar arquivos em seu diretório inicial com o gerenciador de arquivos ou da linha de comando, como visto aqui:

Files via VNC connection to Ubuntu 18.04

Pressione CTRL+C no seu terminal para parar o túnel SSH e voltar ao seu prompt. Isto também irá desconectar sua sessão VNC.

A seguir, vamos configurar nosso servidor VNC como um serviço.

Passo 4 — Executando o VNC como um Serviço de Sistema

Depois, vamos configurar o servidor VNC como um serviço de systemd para que possamos iniciar, parar e reiniciar se necessário, como em qualquer outro serviço. Isso também irá garantir que o VNC inicie quando seu servidor reinicializar.

Primeiramente, crie um novo arquivo de unidade chamado /etc/systemd/system/vncserver@.service, usando seu editor de texto favorito:

  1. sudo nano /etc/systemd/system/vncserver@.service

O símbolo @ no final do nome permitirá que enviemos um argumento que poderemos usar na configuração do serviço. Vamos usar isso para especificar a porta de exibição do VNC que queremos usar quando gerenciarmos o serviço.

Adicione as linhas a seguir ao arquivo. Certifique-se de alterar o valor do User, Group, WorkingDirectory e o nome de usuário no valor do P**IDFILE **para corresponder ao seu nome de usuário:

/etc/systemd/system/vncserver@.service
[Unit] Description=Start TightVNC server at startup After=syslog.target network.target [Service] Type=forking User=sammy Group=sammy WorkingDirectory=/home/sammy PIDFile=/home/sammy/.vnc/%H:%i.pid ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=multi-user.target

O comando ExecStartPre interrompe o VNC , se ele já estiver em execução. O comando ExecStart inicia o VNC e define a profundidade de cor para 24 bits com uma resolução de 1280x800. Também é possível modificar essas opções de inicialização para atender suas necessidades.

Salve e feche o arquivo.

A seguir, faça com que o sistema saiba do novo arquivo de unidade.

  1. sudo systemctl daemon-reload

Habilite o arquivo de unidade.

  1. sudo systemctl enable vncserver@1.service

O 1 que depois do símbol o @ significa sobre qual número de exibição o serviço deve aparecer, neste caso, o padrão :1, como foi discutido no Passo 2.

Interrompa a instância atual do servidor VNC se ele ainda estiver em execução.

  1. vncserver -kill :1

Então, inicie-o como você iniciaria qualquer outro serviço systemd.

  1. sudo systemctl start vncserver@1

É possível verificar se ele iniciou com este comando:

  1. sudo systemctl status vncserver@1

Se ele iniciou corretamente, a saída deverá se parecer com isto:

Output
● vncserver@1.service - Start TightVNC server at startup Loaded: loaded (/etc/systemd/system/vncserver@.service; indirect; vendor preset: enabled) Active: active (running) since Mon 2018-07-09 18:13:53 UTC; 2min 14s ago Process: 22322 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS) Process: 22316 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=0/SUCCESS) Main PID: 22330 (Xtightvnc) ...

Seu servidor VNC agora estará disponível quando reiniciar a máquina.

Inicie seu túnel SSH novamente:

  1. ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip

Então, faça uma nova conexão usando seu software de cliente VNC com o localhost:5901 para conectar à sua máquina.

Conclusão

Agora, você tem um servidor VNC seguro e em execução no seu servidor Ubuntu 18.04. Agora, poderá gerenciar seus arquivos, software e configurações com uma interface gráfica conhecida e fácil de usar e será capaz de executar software gráficos como navegadores de Web remotamente.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors

Default avatar
finid

author


Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Become a contributor for community

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

DigitalOcean Documentation

Full documentation for every DigitalOcean product.

Resources for startups and SMBs

The Wave has everything you need to know about building a business, from raising funding to marketing your product.

Get our newsletter

Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

New accounts only. By submitting your email you agree to our Privacy Policy

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.