Instalação e configuração de um servidor VNC no CentOS 7
Neste guia, veremos como instalar e configurar um servidor VNC no sistema operacional CentOS 7.x para permitir conexões remotas de qualquer cliente VNC, como TightVNC, RealVNC e outros. Em particular, faremos isso usando o software TigerVNC Server, uma ferramenta gratuita que permite o uso de uma área de trabalho virtual autônoma.
Introdução
VNC (Virtual Network Computing) é um protocolo cliente-servidor que permite que um computador cliente (executando um cliente VNC) se conecte e controle um computador remoto (executado em um servidor VNC). O software foi desenvolvido pelo laboratório de pesquisa Olivetti & Oracle em Cambridge, Reino Unido, e seu código-fonte ainda está atualizado e disponível sob a Licença Pública Geral (GNU).
Dependendo do software do servidor, o cliente VNC se conectará à área de trabalho ativa (por exemplo, como programas TeamViewer ou AnyDesk) ou a uma área de trabalho virtual autônoma (como o protocolo de área de trabalho remota RDP do Windows). O último, talvez mais avançado e seguro, especialmente se você precisar gerenciar o computador servidor, pois cada sessão será um ambiente exclusivo, configurado com as permissões e os direitos do usuário conectado. É por isso que escolhemos o TigerVNC, que executa sessões paralelas do ambiente de área de trabalho do computador (GNOME, KDE ou outra GUI): isso significa que uma área de trabalho virtual será criada para cada conexão - isso é exatamente o que queremos.
Instalação do TigerVNC
Agora vamos ver como podemos instalar e configurar o TigerVNC no CentOS. A primeira coisa a fazer é instalar o programa TigerVNC Server abrindo uma sessão de terminal e digitando o seguinte comando com privilégios de root:
Imediatamente depois disso, você precisa criar um usuário VNC separado a partir do qual a conexão será feita (com uma senha dedicada). Para fazer isso, digite o seguinte:
$ sudo passwd vncuser
Importante: nunca faça isso como um usuário root - isso representará uma séria ameaça à segurança do seu sistema. A melhor solução seria deixar o usuário root sem acesso ao VNC e configurar uma conta dedicada com direitos limitados.
Depois de criar o vncuser e definir uma senha para fazer login, você também precisa definir uma senha exclusiva do VNC para esse usuário. O comando para fazer isso é:
$ vncpasswd
(a primeira linha pode ser omitida se já estivermos conectados como vncuser com antecedência).
A próxima coisa a fazer é criar um arquivo de configuração VNC para o vncuser. A maneira mais rápida de fazer isso é copiar o arquivo de modelo VNC compartilhado localizado na pasta /lib/systemd/system/ e, em seguida, alterá-lo:
O número 1 que adicionamos ao novo nome do arquivo é o número de exibição que será usado para essa instância específica do serviço. É importante saber isso porque ele também determinará a porta TCP que será usada pelo nosso servidor VNC, igual a 5900 + número de exibição. A primeira será 5901, depois 5902 e assim por diante.
Imediatamente após a cópia, você precisa editar o novo arquivo usando o Vi, o Nano ou outro editor de texto e substituir [USER] pelo nome do usuário criado recentemente (no nosso caso, vncuser). É assim que o arquivo deve ficar após a atualização (exceto pela longa parte comentada no início):
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/sbin/runuser -l vncuser -c "/usr/bin/vncserver %i -geometry 1280x720"
PIDFile=/home/vncuser/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
[Install]
WantedBy=multi-user.target
Depois de fazer isso, você pode recarregar o daemon VNC e executar o vncserver @ 1 com os seguintes comandos:
$ systemctl start vncserver@:1
Antes de prosseguir, verifique se o serviço está em execução digitando o comando systemctl status:
e crie um link simbólico para que ele seja sempre executado na inicialização do sistema usando o seguinte comando:
Outro teste que você pode realizar antes de tentar se conectar ao servidor é examinar os soquetes de rede ativos usando o comandoss: se tudo funcionar corretamente, você verá que o servidor VNC está funcionando e usa a porta TCP 5901. Execute o comando:
O resultado deve ser o seguinte:
tcp LISTEN 0 128 *:6001 *:* users:(("Xvnc",pid=38344,fd=6))
tcp LISTEN 0 5 :::5901 :::* users:(("Xvnc",pid=38344,fd=10))
tcp LISTEN 0 128 :::6001 :::* users:(("Xvnc",pid=38344,fd=5))
Se você vir isso, então tudo está configurado corretamente.
Configuração do firewall
Como nosso serviço VNC está escutando na porta TCP 5901, você deve ter certeza de que essa porta está aberta e acessível a clientes externos. Portanto, se você tiver um firewall instalado, deverá criar uma regra apropriada que permita a conexão de clientes VNC.
O número de portas a serem abertas dependerá de quantas instâncias do servidor VNC você precisa. Em nosso cenário, fizemos apenas 1, portanto, você só precisa abrir a primeira porta VNC dedicada: TCP 5901, como já dissemos. O comando para abrir essa porta no Firewalld:
# firewall-cmd --add-port = 5901 / tcp --permanent
Não será supérfluo mencionar que você também pode restringir essa porta a determinados grupos, endereços IP, placas de rede ou outras regras de firewall simples ou complexas.
Instalando a interface gráfica do usuário (GUI)
Se você já tiver o GNOME, o KDE ou outros ambientes de desktop instalados, poderá pular esta etapa. Caso contrário, você precisará instalar um deles: o servidor TigerVNC iniciará uma instância paralela desse ambiente de área de trabalho para cada sessão de login, o que significa que precisamos ter pelo menos uma GUI.
GNOME
Se você quiser uma interface GNOME excelente, mas pesada, digite o seguinte:
Xfce
Se você precisar de uma alternativa leve, podemos oferecer o Xfce, um ambiente gratuito e de código aberto para plataformas do tipo Unix que funciona muito bem com o TigerVNC. O GNOME também funciona muito bem, mas consome muitos recursos: se quiser economizar recursos em sua máquina de servidor, o Xfce pode ser a melhor opção. Para instalá-lo, digite o seguinte:
$ yum groupinstall xfce
Configurações adicionais para o Xfce
Se decidir usar o Xfce, você também precisará modificar o arquivo que foi executado quando a sessão VNC foi iniciada. Para fazer isso, edite o arquivo /home/<user>/.vnc/xstartup e altere a entrada exec (geralmente a linha 4) de etc/X11/xinit/xinitrc para startxfce4, conforme mostrado abaixo:
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4
vncserver -kill $DISPLAY
Conexão com o cliente VNC
Agora que tudo está configurado, podemos tentar nos conectar ao nosso serviço VNC usando um cliente VNC, como o TightVNC, o UltraVNC ou o RealVNC, e ver o que acontece. Lembre-se de especificar a porta TCP 5901 (se você seguiu nosso guia).
Possíveis problemas
Se o seu cliente não conseguir estabelecer uma conexão VNC funcional, você precisará verificar o seguinte:
1. Problemas de conexão - Configuração do firewall: se você vir erros de pop-up informando que o cliente não pode se conectar ao host remoto, será necessário verificar a configuração da rede e do firewall para garantir que não haja problemas de bloqueio que possam impedir que o cliente se conecte à porta 5901 do servidor TCP.
2. Tela preta com o mouse - atualizando o YUM ou reinstalando a GUI: se você vir uma tela preta com um cursor do mouse funcionando, isso provavelmente significa que a conexão VNC está funcionando bem, mas há algo que impede que a GUI inicie corretamente na área de trabalho. Para correção:
- Execute o yum update para instalar as versões mais recentes do TigerVNC e da própria GUI. Certifique-se de manter o registro de quaisquer problemas que ocorram durante a fase de instalação.
- Desinstale e reinstale a GUI usando o comando yum remove / yum group remove e yum groupinstall novamente. Se ainda assim nada funcionar, você pode tentar instalar uma GUI diferente.