Manager, Developer Education
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 de início rápido, você configurará um servidor VNC com o TightVNC em um servidor Ubuntu 20.04 e se conectará a ele com segurança através de um túnel SSH. Em seguida, você usará um programa cliente VNC em sua máquina local para interagir com o servidor através de um ambiente gráfico de desktop.
Para completar este tutorial, será necessário:
o vinagre
, krdc
, RealVNC ou o TightVNC.Após se conectar ao servidor com o SSH, atualize a lista de pacotes:
- sudo apt update
Em seguida, instale o Xfce juntamente com o pacote xfce4-goodies
, que contém algumas melhorias para o ambiente desktop:
- sudo apt install xfce4 xfce4-goodies
Uma vez que a instalação tiver terminada, instale o servidor do TightVNC:
- sudo apt install tightvncserver
Em seguida, execute o comando vncpasswd
para definir uma senha de acesso VNC e criar os arquivos de configuração iniciais:
- vncpasswd
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 de comprimento; senhas com mais de 8 caracteres serão truncadas automaticamente. Assim que verificar a senha, você terá a opção de criar uma senha apenas para visualização, mas isso não é necessário.
Se quiser alterar sua senha ou adicionar uma senha apenas para visualização, execute novamente o comando vncpasswd
.
Os comandos que o servidor VNC executa na inicialização estão localizados em um arquivo de configuração chamado xstartup
na pasta .vnc
sob o seu diretório home. Neste passo, vamos criar um script xstartup
personalizado que dirá ao servidor VNC para se conectar ao desktop Xfce.
Crie um novo arquivo xstartup
e abra-o em um editor de texto, como o nano
:
- nano ~/.vnc/xstartup
Adicione as seguintes linhas ao novo arquivo:
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
Após o shebang, o primeiro comando no arquivo, xrdb $HOME/. Xresources
, diz ao framework GUI do VNC para ler o usuário do servidor.
Arquivo Xresources. O segundo comando diz ao servidor para iniciar o Xfce.
Salve e feche o arquivo após adicionar essas linhas. Se usou o nano
, faça isso pressionando as teclas CTRL+X
, Y
e depois ENTER
.
Em seguida, torne o arquivo executável:
- chmod +x ~/.vnc/xstartup
E inicie o servidor VNC com o comando vncserver
:
- vncserver -localhost
Este comando inclui a opção -localhost
, que vincula o servidor VNC à interface loopback do seu servidor. Isso fará com que o VNC permita apenas conexões que se originam do servidor onde ele está instalado.
Você verá um resultado parecido com 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
Aqui, você pode ver que o comando lança uma instância de servidor padrão na porta 5901
. Essa porta é chamada de porta de exibição e é referida pelo VNC como :1
:
Para se conectar com segurança ao seu servidor, você estabelecerá um túnel SSH e, em seguida, dirá ao seu cliente para se conectar usando esse túnel, em vez de 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
:
- ssh -L 59000:localhost:5901 -C -N -l sammy your_server_ip
A porta local pode ser qualquer porta que ainda não está bloqueada por outro programa ou processo, apesar de usarmos a 59000
neste exemplo. Além disso, certifique-se de alterar sammy
para o nome de usuário do Ubuntu e your_server_ip
para refletir o endereço IP do seu servidor.
Se estiver usando o PuTTY para se conectar ao seu servidor, você pode criar um túnel SSH, clicando com o botão direito do mouse na barra superior da janela do terminal e, em seguida, clicando na opção Change Settings…:
Encontre a ramificação Connection no menu em árvore, no lado esquerdo da janela de reconfiguração do PuTTY. Expanda a ramificação SSH e clique em Tunnels. Na tela Options controlling SSH port forwarding, digite 59000
como Source Port e localhost:5901
como Destination desta forma:
Em seguida, clique no botão Add e, em seguida, no botão Apply para implementar o túnel.
Assim que o túnel estiver em execução, utilize um cliente VNC para se conectar a localhost:59000
. 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 local para parar o túnel SSH e voltar ao seu prompt. Isto também irá desconectar sua sessão VNC.
Ao configurar o servidor VNC para ser executado como um serviço systemd, você pode usar os comandos de gerenciamento do systemd.no servidor como start, stop e restart, bem como ativá-lo para iniciar a execução sempre que o servidor for inicializado.
Primeiro, crie um novo arquivo de unidade systemd chamado /etc/systemd/vncserver@.service
:
- sudo nano /etc/systemd/system/vncserver@.service
O símbolo @
no final do nome nos permitirá passar em um argumento que poderemos usar na configuração do serviço. Vamos usar isto para especificar a porta de exibição do VNC que queremos usar quando gerenciarmos o serviço.
Adicione as seguintes linhas ao arquivo, certificando-se de alterar o valor de User, Group, WorkingDirectory, e o nome de usuário no valor do PIDFILE para que corresponda ao seu nome de usuário:
[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 -localhost :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
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
seguindo o símbolo @
significa em 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 ela ainda estiver em execução.
- vncserver -kill :1
Então, inicie-a 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
Consulte nosso tutorial How To Use Systemctl to Manage Systemd Services and Units para obter mais informações sobre o systemctl
.
Para reconectar, inicie seu túnel SSH novamente.
- ssh -L 59000:127.0.0.1:5901 -C -N -l sammy your_server_ip
Então, faça uma nova conexão usando seu software cliente VNC com localhost:59000
para se conectar ao seu servidor.
Você tem agora um servidor VNC seguro funcionando em seu servidor Ubuntu 20.04. Agora, você será capaz de gerenciar seus arquivos, softwares e configurações com uma interface gráfica conhecida e fácil de usar, e será capaz de executar remotamente softwares gráficos como navegadores web.
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!
Sign up for Infrastructure as a Newsletter.
Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.