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.
Para completar este tutorial, será necessário:
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:
- sudo apt update
Agora, instale o ambiente de área de trabalho Xfce no seu servidor:
- sudo apt install xfce4 xfce4-goodies
Uma vez que a instalação tiver terminada, instale o servidor do TightVNC:
- 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:
- vncserver
Será solicitado que você digite e verifique uma senha para acessar sua máquina remotamente:
OutputYou 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:
OutputWould 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.
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:
- vncserver -kill :1
O resultado deve se parecer com este, embora você veja um PID diferente:
OutputKilling Xtightvnc process ID 17648
Antes de modificar o arquivo xstartup
, faça um back-up do original:
- mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
Agora, crie um novo arquivo de xstartup
e abra ele no seu editor de texto:
- 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.
- sudo chmod +x ~/.vnc/xstartup
Agora, reinicie o servidor VNC.
- vncserver
Você verá um resultado semelhante a este:
OutputNew '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.
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:
- 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:
É possível acessar arquivos em seu diretório inicial com o gerenciador de arquivos ou da linha de comando, como visto aqui:
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.
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:
- 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.
- sudo systemctl daemon-reload
Habilite o arquivo de unidade.
- 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.
- vncserver -kill :1
Então, inicie-o como você iniciaria qualquer outro serviço systemd.
- sudo systemctl start vncserver@1
É possível verificar se ele iniciou com este comando:
- 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:
- 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.
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.
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!