Tutorial

Como instalar e configurar a VNC no Debian 9

Published on January 9, 2020
Português
Como instalar e configurar a VNC no Debian 9

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 Debian 9 e irá se conectar a ele de forma segura por 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 Debian 9 não vem com um ambiente gráfico de área de trabalho ou um servidor VNC instalado. Assim, vamos começar por instalar esses. Especificamente, iremos instalar os pacotes de ambiente de área de trabalho - Xfce - e do TightVNC mais recentes disponíveis no repositório oficial do Debian.

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

Durante a instalação, será solicitado que você selecione o layout do seu teclado a partir de uma lista de opções possíveis. Escolha o que for apropriado para o seu idioma e pressione Enter. A instalação continuará.

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 do comando sudo e o endereço de IP do seu servidor.

Se estiver usando um cliente SSH gráfico, como o PuTTY, utilize o your_server_ip como o IP de conexão e defina o localhost:5901 como uma nova porta redirecionada 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.

Conexão remota VNC com o servidor Debian 9 Selecione a opção Usar configuração padrão para configurar sua área de trabalho rapidamente.

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

Arquivos através de conexão VNC com o Debian 9

Na máquina local, pressione CTRL+C no 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 o servidor de 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 PIDFILE 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ímbolo @ 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; enabled; vendor preset: enabled) Active: active (running) since Wed 2018-09-05 16:47:40 UTC; 3s ago Process: 4977 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS) Process: 4971 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=0/SUCCESS) Main PID: 4987 (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 de VNC seguro em execução no seu servidor Debian 9. 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 us


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!

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

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

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel