Acesso remoto a um computador Linux usando Tightvnc com systemd
On Janeiro 13, 2022 by adminEste é um guia para instalar o TightVNC no Raspberry Pi. A última versão do Raspbian agora inclui o RealVNC que é uma ferramenta alternativa de desktop remoto. Se você preferir usar RealVNC então ele é facilmente habilitado através da ferramenta raspi-config, este guia será útil para aqueles que querem entender sobre a criação de outras aplicações para rodar na inicialização através do systemd.
A linha de comandos é uma ótima maneira de gerenciar um computador Linux remoto se você não se importa em digitar comandos, mas às vezes você precisa ser capaz de ver uma GUI. Com um cabo muito longo, uma das melhores maneiras de fazer isto é usando o protocolo VNC (Virtual Network Computing).
TightVNC vs Real VNC
O servidor TightVNC cria uma janela virtual diferente que é replicada em uma máquina diferente usando o cliente TightVNC. Isto difere do RealVNC, que normalmente ecos a tela padrão.
Quando a maioria das pessoas pensa em uma ferramenta de desktop remoto, então elas normalmente pensam na maneira que o RealVNC funciona. Neste caso quando você move o mouse, ou inicia uma aplicação, ela exibe a mesma saída em uma tela fisicamente ligada (normalmente HDMI) e em um cliente remoto através da rede.
TightVNC é útil se você quiser executar algo diferente do que está na tela principal. Por exemplo, você pode usá-lo para que você possa ter um display de status na tela principal (via HDMI) com um display diferente usado para a configuração que é exibida em um laptop.
Uma outra vantagem do TightVNC é que é um software de código aberto GRATUITO. Como tal, não tem restrições de uso e você pode ver e modificar o código fonte. Real VNC é uma versão comercial de VNC e precisa ser licenciado. Real VNC é livre para uso pessoal no Raspberry Pi, mas tem restrições se você quiser fazer outras coisas com ele que podem exigir uma licença comercial. Isto inclui executar a imagem do Raspbian Desktop em um PC, já que não inclui o software comercial.
Instalando um script de inicialização usando Systemd
A seguir estão instruções de como configurar isto no Raspberry Pi (distribuição baseada no Debian). Deve ser similar para qualquer outra distribuição baseada em Debian (por exemplo, Ubuntu) que usa arquivos de inicialização do Systemd. Algumas outras distribuições usam diferentes ferramentas de instalação de software e possivelmente diferentes ferramentas de configuração do init.
Se isto for usado em combinação com o guia para executar o Raspberry Pi headless com Debian Linux então ele pode ser usado para configurar um Raspberry Pi para acesso remoto sem nunca precisar conectá-lo a um monitor.
Escolhendo TightVNC
Existem vários projetos de software que suportam VNC. Eu escolhi usar TightVNC porque é um software livre de código aberto (GPL2), fornece compressão para permitir que ele funcione em uma rede lenta (Internet) e está facilmente disponível nos repositórios de software.
Modelo de servidor do cliente
VNC segue o modelo tradicional de corte do cliente. O software servidor roda no host a ser acessado, e o software cliente roda na máquina local que deseja controlar o host. O servidor e o cliente não precisam ser o mesmo (por exemplo, o cliente pode ser RealVNC quando o servidor é TightVNC), mas algumas características podem funcionar somente quando o mesmo cliente e servidor são usados.
Instalar o software servidor TightVNC
>
Primeiro atualizar as informações do repositório de software usandosudo apt update
Isso é particularmente importante se você acabou de instalar o sistema operacional, pois as informações do repositório podem estar incompletas.
Instale o software do servidor a partir dos repositórios:sudo apt install tightvncserver
Inicie o servidor e configure uma senha
A primeira vez que você executar o servidor, ele irá solicitar que você defina uma senha. Esta é a senha que você usa ao se conectar remotamente.
/usr/bin/tightvncserver
Não há necessidade de criar uma senha apenas para visualização, a menos que você tenha uma necessidade específica.
Quando o servidor iniciar, ele lhe dirá qual desktop virtual foi configurado. Neste caso:New 'X' desktop is raspberrypi:1
diz que é a área de trabalho virtual 1. Você se conectaria a isto usando :1 no final do endereço IP no cliente, este é o que iremos configurar para iniciar automaticamente mais tarde.
Você pode executar várias instâncias. Cada vez que você iniciar tightvncserver ele usará o próximo desktop disponível, mas na maioria dos casos você precisará apenas de um.
Adicionando Tightvnc ao startup do systemd
Para ter o startup do Tightvnc automaticamente precisamos criar um novo arquivo de startup, que precisa ser armazenado no diretório /etc/systemd/system/ e terminar com o sufixo “.service”. Eu chamei este tightvncserver.service. Isto precisa ser criado como usuário root assim usando sudosudo nano /etc/systemd/system/tightvncserver.service
-
-
Description=TightVNC remote desktop server
-
After=sshd.service
-
-
-
Type=dbus
-
ExecStart=/usr/bin/tightvncserver :1
-
User=pi
-
Type=forking
- >
-
-
WantedBy=multi-user.target
Pode ser necessário alterar o nome do utilizador na linha 8. Atualmente ele está configurado para pi que é o nome de usuário padrão na imagem de Raspberry Pi Raspbian. Defina isso para qualquer nome de usuário que você queira fazer o login no TightVNC como. Não coloque root como user.
Mude o arquivo para que ele seja propriedade do rootsudo chown root:root /etc/systemd/system/tightvncserver.service
Faça o arquivo executável executandosudo chmod 755 /etc/systemd/system/tightvncserver.service
É uma boa idéia testar o script neste ponto em vez de esperar até depois de uma reinicialização. Isto é feito usando:sudo systemctl start tightvncserver.service
Não se preocupe se você receber a seguinte mensagem de erro, que é porque você já iniciou tightvncA VNC server is already running as :1
Enable startup at boot usandosudo systemctl enable tightvncserver.service
TightVNC agora começará na inicialização. Eu recomendaria que você reinicialize neste ponto para ter certeza de que está funcionando, mas você pode simplesmente parar e iniciar o serviço usando o comando systemctl em seu lugar.
Nota que isto foi projetado para executar apenas uma instância do TightVNC no computador. Se você quer ser capaz de iniciar e parar instâncias específicas de TightVNC então você precisará ajustar o script de inicialização apropriadamente.
Instalando o visualizador TightvNC (cliente VNC) num computador Linux
Em um computador Linux você pode instalar o visualizador comsudo apt install xtightvncviewer
ou se isso não estiver nos repositórios tente:sudo apt-get install ssvnc
Isto funcionará apenas com distribuições baseadas em Debian/Ubuntu, para outras distribuições use o gerenciador de pacotes normal.
Nota que ssvnc – que é a versão que instalei no meu computador Kubuntu é baseada no tightvnc, mas também tem a capacidade de configurar o ssh tunnelling (veja mais tarde) através da GUI.
>
Login usandoxtightvncviewer 192.168.1.6:1
(substituir pelo seu próprio endereço IP conforme apropriado)
Instalando a vista Tightvnc num computador Windows
Para aceder a partir do Windows ou usando o download do cliente Java a partir do TightVNC.com
Securing TightVNC
TightVNC permite que qualquer pessoa que saiba a senha faça o login como usuário que está rodando. Ele também faz isso sem criptografia para que qualquer pessoa possa bisbilhotar a sessão. Felizmente existe uma solução segura, que é tunelar a conexão através de um login ssh (secure shell).
O primeiro passo é restringir o Tightvnc apenas ao computador local. Isto é feito adicionando a opção -localhalhost ao iniciar o servidor tightvncserver. Para fazer isso edite a linha 7 no arquivo /etc/systemd/systemd/tightvncserver.service para ler:>
ExecStart=/usr/bin/tightvncserver -localhost :1
Então reinicie o servidor.
Para fazer login usando ssh – primeiro login para o computador host usando sshssh [email protected] -L 5901:localhost:5901
A opção -L cria o túnel, da porta 5901 do computador atual (padrão) para o computador host (como localhost) porta 5901. A porta 5901 é a porta padrão para o display 1, 5902 para o display 2 etc.
Para conectar usando tightvnc use agora o comandoxtightvncviewer 127.0.0.1:1
Note que seu terminal anterior agora estará logado no Raspberry Pi então você precisará iniciar um novo terminal ou aba para rodar o visualizador.
Se estiver usando o Windows então o túnel ssh pode ser criado de dentro do PuTTY
Então conecte-se usando o cliente vnc usando 127.0.0.1:1.
Você agora pode usar a GUI para executar aplicações no Raspberry Pi sem precisar de um monitor ou teclado. Se você tem o redirecionamento de portas definido no seu roteador você pode fazer isso pela Internet.
Iniciar o seu gerenciador de janelas
As instruções acima são suficientes para o Raspberry Pi rodando Raspbian (Debian). Em outros sistemas você pode precisar fazer uma nova alteração de configuração para iniciar seu gerenciador de janelas / lançador de aplicações normal. Se você conseguir uma tela em branco ao conectar edite o arquivo ~/.vnc/xstartup e substitua a linha /etc/X11/Xsession por uma das seguintes como apropriado.
exec ck-launch-session startlxde#for an lxde sessionexec ck-launch-session gnome-session#for a gnome-sessionexec ck-launch-session openbox-session#for an openbox desktopexec ck-launch-session startxfce4#for an xfce desktopexec ck-launch-session icewm#for an icewm desktopexec ck-launch-session startkde#for a kde desktop
Por exemplo com o Ubuntu você usaria a entrada para o gnome, para o xubuntu você usaria xfce e para o kubuntu usaria kde. O Raspberry Pi usa lxde, mas isto é iniciado automaticamente no Raspberry Pi não há necessidade de adicioná-lo ao arquivo xstartup.
Deixe uma resposta