Data de Publicação: 04 de Julho de 2009
Este não é um assunto tão novo assim, mas ao procurar dicas de como acessar, de forma segura e fácil, o desktop de um PC remoto a uma máquina local, vimos que são muitos pequenos fatores a serem considerados e que não havia um "passo-a-passo" de como fazer isto, testando todos os componentes da conexão. Por isso, acreditamos existir espaço para este pequeno tutorial.
Aqui na BrodTec, em vários momentos, necessitamos acessar remotamente máquinas de clientes ou nossas próprias máquinas da empresa a partir de nossos notebooks, seja para alguma atividade de suporte, teste de alguma ferramenta ou mesmo para o acesso rápido a uma aplicação que não temos instalada localmente. Na maioria das vezes, o simples acesso via ssh é o suficiente, em outras o ideal é ter acesso completo ao desktop da máquina cliente. Este tutorial, baseado na distribuição Linux Mint (o que significa que provavelmente servirá para o Debian e todas as suas variantes, como o Ubuntu), cobre todos os passos necessários para o acesso completo, de forma segura, a uma máquina remota. Como os passos aqui cobertos vão desde testes na própria máquina local, em máquinas da mesma rede local e, enfim, em máquinas conectadas via Internet, este documento deve servir como base e referência tanto para usuários menos experientes quanto aos mais avançados, já que os links aqui apontarão para textos mais complexos e de maior profundidade técnica.
Figura 1: Ambiente de testes
brod@brod-laptop:~$ ping localhost
—- localhost ping statistics ---
brod@brod-laptop:~$
A grosso modo, o ping serve para testar a conexão entre máquinas em rede. O comando ping localhost faz com que verifiquemos que nossa máquina seja capaz de comunicar-se com ela mesma, o que já é um bom caminho andado. Caso você queira aprofundar-se mais sobre o ping e protocolos de rede, recomendamos a leitura do livro Redes sem Fio no Mundo em Desenvolvimento.
Agora, vamos ver se você consegue estabelecer uma conexão segura com a sua própria máquina com o ssh.
ssh usuario@localhost
Substitua "usuario" pelo seu próprio nome de usuário em seu sistema. Caso sua instalação seja nova, é bem provável que você não tenha um servidor ssh instalado. Use o Gerenciador de Pacotes e instale o pacote openssh-server. Existindo algum outro pacote pendente, o próprio gerenciador irá instalá-lo para você. Caso você não tenha experiência com a instalação de software, um bom guia pode ser encontrado aqui: Como Instalar Tudo em Ubuntu.
Uma vez concluída a instalação, você deve conseguir acessar a sua própria máquina. As cópias de tela abaixo ilustram o nosso exemplo. Troque o nome de usuário "brod" pelo seu próprio nome.
brod@brod-laptop:~$ ssh brod@localhost
RSA key fingerprint is a5:2b:93:3c:1d:0c:5f:c9:2e:2d:3e:7e:39:19:df:fc.
Como esta é a primeira vez que estamos conectando, a autenticidade de nosso servidor ainda não foi estabelecida. Como temos certeza de que apenas estamos nos conectando com nossa própria máquina, vamos responder "yes". O sistema solicitará a sua senha de usuário e pronto! Você acaba de estabelecer uma conexão segura e remota com sua própria máquina local! Nada de muito especial, mas um passo importante a ser testado no futuro caso algo não dê certo.
Mas não queremos parar por aí. O que queremos realmente testar é abrir um desktop remoto. Para isto, vamos ver se conseguimos fazê-lo, também, em nossa máquina local. Para isto precisaremos de mais dois pacotes: tightvncserver e xtightvncviewer. Localize-os e instale-os usando seu gerenciador de pacotes. Estes pacotes são implementações de um servidor e cliente, respectivamente, do VNC, Virtual Network Computing. Informações completas sobre isto, com mais links para outras referências, podem ser encontradas neste link.
vncserver :64 -geometry 800x600 -depth 16 -name TESTE
No comando acima, TESTE será o nome de seu servidor, geometry é sua resolução e depth a profundidade de cores. Depois que funcionar, você poderá testar com outros parâmetros. Os comandos vncserver --help e man vncserver darão mais informações sobre estes parâmetros.
New 'TEST' desktop is test:64
brod@brod-laptop:~$ xhost +
brod@brod-laptop:~$ vncviewer -via localhost localhost:64
brod@localhost's password:  [Nota: esta é a sua senha de usuário]
Password:  [Esta é a senha de visualização completa que você definiu no passo anterior]
Desktop name "brod's TESTE desktop (brod-laptop:64)"
brod@brod-laptop:~$ ifconfig
eth0      Link encap:Ethernet  Endereço de HW 00:13:a9:85:7a:e3
wlan0     Link encap:Ethernet  Endereço de HW 00:19:d2:37:8e:2e
brod@brod-laptop:~$ ping 192.168.1.100
—- 192.168.1.100 ping statistics ---
ssh brod@192.168.1.100
A situação mais comum que enfrentamos é a de termos que nos conectar a uma máquina de um cliente, utilizando seu próprio desktop. Para isto, o cliente deverá ter instalado em sua máquina o openssh-server e o tightvncserver. Certifique-se de que todos os procedimentos descritos em Testes na máquina local funcionam do lado do cliente antes de testar o acesso remoto. Caso seja possível conectar sua máquina à rede do cliente, faça também todos os procedimentos descritos em Testes na rede local.
Agora, tanto nossas máquinas como a máquina do cliente possuem endereços internos de rede, invisíveis para a Internet. E mesmo os endereços que recebemos dos provedores para o acesso são fornecidos dinamicamente. Como, então, obter os endereços necessários para as conexões? A melhor saída que encontramos para isto é o hamachi. Só que agora o gerenciador de pacotes não irá ajudar. Você precisará baixar o pacote deste endereço, selecionando a plataforma Linux. Note que é possível instalá-lo também em outras plataformas, mas estas não foram testadas por nós. Caso você nunca tenha feito uma instalação "na mão" no Linux, é bom seguir os próximos passos com a ajuda de alguém mais experiente. Mas, mesmo assim, ela é bastante simples:
Baixe o pacote, anotando a pasta onde foi feito o download;
Torne-se superusuário com o comando sudo su;
Vá para o diretório /usr/local/src, descompacte o hamachi e vá para a pasta do hamachi
tar -xzvf /pasta-de-download/hamachi-(versão)-lnx.tar.gz
cd /usr/local/src/hamachi-(versão)-lnx/
Saia do modo superusuário (tecle Ctrl+D) e execute os seguintes comandos:
Crie uma rede para o seu ambiente. Você pode criar uma rede para cada ambiente, ou uma rede que será usada por toda a sua empresa, bastando repetir o comando a seguir:
Entre "online" na rede à qual se uniu para que possa ser visto por outros usuários:
Verifique os endereços conectados:
* 5.143.252.66                                189.7.202.2:39375
Verifique a interface criada:
ham0      Link encap:Ethernet  Endereço de HW f2:0b:73:13:15:46
inet end.: 5.143.245.83  Bcast:5.255.255.255  Masc:255.0.0.0
UP BROADCAST RUNNING MULTICAST  MTU:1200  Métrica:1
Obviamente, para poder conectar sua máquina à máquina do cliente, você também deve ter o hamachi instalado. Para isto, repita os passos 1 a 5, salte o passo 6, pois a rede já está criada. E siga os demais passos para saber o endereço de sua própria máquina no hamachi. Em nosso exemplo, a máquina do cliente tem o endereço 5.143.245.83 e a máquina que usaremos no escritório tem o endereço 5.143.252.66. Como nos casos anteriores, teste as conexões com o comando ping e tente abrir uma sessão ssh remota usando o endereço do cliente (ssh cliente@5.143.245.83). Tudo isto funcionando, basta testar a abertura de um desktop remoto.
Para acessar com facilidade a máquina remota, o melhor é que você já deixe os serviços preparados. Especialmente o tuncfg tem que ser executado no modo superusuário (aliás, na maior parte das vezes em que o comando hamachi start não rodar é porque o tuncfg não foi executado). Por isso, é conveniente colocá-lo em alguns de seus scripts de inicialização do Linux. Um bom exemplo de como isto pode ser feito pode ser encontrado neste artigo.
Cesar Brod e Joice Käfer são sócios da BrodTec, nerds, pupilos do professor Pimenta e, ao menos uma vez por semana, fazem experiências culinárias.