VPS no Linux com interface gráfica: lançando um servidor VNC no Ubuntu 18.04

VPS no Linux com interface gráfica: lançando um servidor VNC no Ubuntu 18.04
Alguns usuários alugam VPS relativamente baratos com Windows para executar serviços de área de trabalho remota. O mesmo pode ser feito no Linux sem hospedar seu próprio hardware em um data center ou alugar um servidor dedicado. Algumas pessoas precisam de um ambiente gráfico familiar para testes e desenvolvimento ou de uma área de trabalho remota com um amplo canal para trabalhar em dispositivos móveis. Há muitas opções para usar o sistema Virtual Network Computing (VNC) baseado no protocolo Remote FrameBuffer (RFB). Neste breve artigo explicaremos como configurá-lo em uma máquina virtual com qualquer hipervisor.

Sumário:

Selecionando um servidor VNC
Instalação e configuração
Iniciando um serviço via systemd
Conexão de área de trabalho

Selecionando um servidor VNC

O serviço VNC pode ser integrado ao sistema de virtualização e o hipervisor irá conectá-lo aos dispositivos emulados e nenhuma configuração adicional será necessária. Esta opção envolve sobrecarga significativa e não é suportada por todos os provedores - mesmo em uma implementação que consome menos recursos, quando em vez de emular um dispositivo gráfico real, uma abstração simplificada (framebuffer) é transferida para a máquina virtual. Às vezes, um servidor VNC está vinculado a um servidor X em execução, mas esse método é mais adequado para acessar uma máquina física e, em uma máquina virtual, cria uma série de dificuldades técnicas. A maneira mais fácil de instalar um servidor VNC é com um servidor X integrado. Não requer dispositivos físicos (adaptador de vídeo, teclado e mouse) ou sua emulação através de hipervisor, sendo portanto adequado para qualquer tipo de VPS.

Instalação e configuração

Precisaremos de uma máquina virtual com Ubuntu Server 18.04 LTS em sua configuração padrão. Existem vários servidores VNC nos repositórios padrão desta distribuição: TightVNC, TigerVNC, x11vnc e outros. Decidimos pelo TigerVNC - um fork atual do TightVNC, que não é suportado pelo desenvolvedor. A configuração de outros servidores é feita de maneira semelhante. Você também precisa escolher um ambiente de desktop: a melhor opção, em nossa opinião, seria o XFCE devido aos requisitos relativamente baixos de recursos computacionais. Quem desejar pode instalar outro DE ou WM: tudo depende da preferência pessoal, mas a escolha do software afeta diretamente a necessidade de RAM e núcleos computacionais.

VPS no Linux com interface gráfica: lançando um servidor VNC no Ubuntu 18.04

A instalação do ambiente desktop com todas as dependências é feita com o seguinte comando:

sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

Em seguida você precisa instalar o servidor VNC:

sudo apt-get install tigervnc-standalone-server tigervnc-common

Executá-lo como superusuário é uma má ideia. Crie um usuário e grupo:

sudo adduser vnc

VPS no Linux com interface gráfica: lançando um servidor VNC no Ubuntu 18.04

Vamos adicionar o usuário ao grupo sudo para que ele possa realizar tarefas relacionadas à administração. Se não houver essa necessidade, você pode pular esta etapa:

sudo gpasswd -a vnc sudo

A próxima etapa é executar o servidor VNC com privilégios de usuário vnc para criar uma senha segura e arquivos de configuração no diretório ~/.vnc/. O comprimento da senha pode ser de 6 a 8 caracteres (caracteres extras são cortados). Se necessário, também é definida uma senha apenas para visualização, ou seja, sem acesso ao teclado e mouse. Os seguintes comandos são executados como usuário vnc:

su - vnc
vncserver -localhost no

VPS no Linux com interface gráfica: lançando um servidor VNC no Ubuntu 18.04
Por padrão, o protocolo RFB usa o intervalo de portas TCP de 5900 a 5906 - este é o chamado. portas de exibição, cada uma correspondendo a uma tela do servidor X. Neste caso, as portas estão associadas a telas de :0 a :6. A instância do servidor VNC que lançamos escuta a porta 5901 (tela: 1). Outras instâncias podem funcionar em outras portas com telas :2, :3, etc. Antes de continuar a configuração, você precisa parar o servidor:

vncserver -kill :1

O comando deve exibir algo assim: “Matando o ID do processo Xtigervnc 18105... sucesso!”

Quando o TigerVNC é iniciado, ele executa o script ~/.vnc/xstartup para definir as configurações. Vamos criar nosso próprio script, primeiro salvando uma cópia de backup do existente, se existir:

mv ~/.vnc/xstartup ~/.vnc/xstartup.b
nano ~/.vnc/xstartup

A sessão do ambiente de desktop XFCE é iniciada pelo seguinte script xstartup:

#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xrdb $HOME/.Xresources
exec /usr/bin/startxfce4 &

O comando xrdb é necessário para que o VNC leia o arquivo .Xresources no diretório inicial. Lá o usuário pode definir várias configurações gráficas da área de trabalho: renderização de fontes, cores de terminal, temas de cursor, etc. O script deve ser tornado executável:

chmod 755 ~/.vnc/xstartup

Isso conclui a configuração do servidor VNC. Se você executá-lo com o comando vncserver -localhost no (como usuário vnc), poderá se conectar com a senha especificada anteriormente e ver a seguinte imagem:

VPS no Linux com interface gráfica: lançando um servidor VNC no Ubuntu 18.04

Iniciando um serviço via systemd

Iniciar manualmente um servidor VNC não é adequado para uso em combate, portanto configuraremos um serviço do sistema. Os comandos são executados como root (usamos sudo). Primeiro, vamos criar um novo arquivo de unidade para nosso servidor:

sudo nano /etc/systemd/system/[email protected]

O símbolo @ no nome permite passar um argumento para configurar o serviço. No nosso caso, especifica a porta de exibição VNC. O arquivo da unidade consiste em várias seções:

[Unit]
Description=TigerVNC server
After=syslog.target network.target

[Service]
Type=simple
User=vnc 
Group=vnc 
WorkingDirectory=/home/vnc 
PIDFile=/home/vnc/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x960 :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

Então você precisa notificar o systemd sobre o novo arquivo e ativá-lo:

sudo systemctl daemon-reload
sudo systemctl enable [email protected]

O número 1 no nome especifica o número da tela.

Pare o servidor VNC, inicie-o como um serviço e verifique o status:

# от имени пользователя vnc 
vncserver -kill :1

# с привилегиями суперпользователя
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1

Se o serviço estiver em execução, devemos obter algo assim.

VPS no Linux com interface gráfica: lançando um servidor VNC no Ubuntu 18.04

Conexão de área de trabalho

Nossa configuração não utiliza criptografia, portanto os pacotes de rede podem ser interceptados por invasores. Além disso, em servidores VNC, muitas vezes encontrar vulnerabilidades, portanto você não deve abri-los para acesso pela Internet. Para se conectar com segurança ao seu computador local, você precisa empacotar o tráfego em um túnel SSH e, em seguida, configurar um cliente VNC. No Windows, você pode usar um cliente SSH gráfico (por exemplo, PuTTY). Por segurança, o TigerVNC no servidor escuta apenas localhost e não é acessível diretamente de redes públicas:


sudo netstat -ap |more

VPS no Linux com interface gráfica: lançando um servidor VNC no Ubuntu 18.04
No Linux, FreeBSD, OS X e outros sistemas operacionais do tipo UNIX, um túnel do computador cliente é feito usando o utilitário ssh (o sshd deve estar em execução no servidor VNC):

ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ip

A opção -L vincula a porta 5901 da conexão remota à porta 5901 no host local. A opção -C ativa a compactação e a opção -N informa ao ssh para não executar o comando remoto. A opção -l especifica login para login remoto.

Após configurar o túnel no computador local, você precisa iniciar o cliente VNC e estabelecer uma conexão com o host 127.0.0.1:5901 (localhost:5901), usando a senha especificada anteriormente para acessar o servidor VNC. Agora podemos nos comunicar de forma segura através de um túnel criptografado com o ambiente de desktop gráfico XFCE no VPS. Na captura de tela, o utilitário principal está sendo executado no emulador de terminal para mostrar o baixo consumo de recursos computacionais da máquina virtual. Então tudo dependerá das aplicações do usuário.

VPS no Linux com interface gráfica: lançando um servidor VNC no Ubuntu 18.04
Você pode instalar e configurar um servidor VNC no Linux em praticamente qualquer VPS. Isso não requer configurações caras e que consomem muitos recursos com emulação de adaptador de vídeo ou a compra de licenças de software comercial. Além da opção de serviço do sistema que consideramos, existem outras: iniciar em modo daemon (via /etc/rc.local) quando o sistema inicializa ou sob demanda via inetd. Este último é interessante para criar configurações multiusuário. O Internet Superserver iniciará o servidor VNC e conectará o cliente a ele, e o servidor VNC criará uma nova tela e iniciará a sessão. Para autenticar dentro dele, você pode usar um gerenciador de exibição gráfica (por exemplo, LightDM), e após desconectar o cliente, a sessão será encerrada e todos os programas que trabalham com a tela serão encerrados.

VPS no Linux com interface gráfica: lançando um servidor VNC no Ubuntu 18.04

Fonte: habr.com

Adicionar um comentário