Como conectar ao seu Mac via SSH usando o serviço Voltar ao Meu Mac, do iCloud

Detalhes internos do serviço Voltar ao Meu Mac (do iCloud) podem facilitar a tarefa de permitir conexões SSH entre os seus Macs.

Fazer com que o seu Mac aceite conexões SSH é simples: basta ir em Preferências do Sistema ➡ Compartilhamento e ativar a opção Acesso Remoto.

Mas permitir que a conexão SSH chegue ao Mac (ou a qualquer outro computador em redes domésticas ou comerciais) via Internet pode ser um pouco mais complicado, porque frequentemente isso envolve fazer com que o usuário remoto saiba o endereço IP público do Mac em questão, e fazer com que os roteadores das 2 extremidades (no mínimo) estejam configurados para permitir que a conexão ocorra.

Existem várias ferramentas tradicionais para facilitar as condições acima quando você está na rua e precisa acessar o computador de casa, ou vice-versa: usar um serviço DNS dinâmico e configurar adequadamente o serviço NAT nos roteadores, por exemplo. Elas funcionam no Mac também, mas nele existe uma alternativa a mais para considerar.

O serviço Voltar ao Meu Mac pode ser usado como intermediário para abrir suas conexões SSH também.

Quando a conexão é entre 2 Macs que lhe pertencem, você pode reduzir um pouco da complexidade no meio do caminho se ativar o serviço Voltar ao meu Mac (Back to My Mac, ou BTMM) nas suas Preferências do Sistema ➡ iCloud.

Com o Voltar ao Meu Mac (BTMM) ativado nos 2 Macs, eles ganham uma forma de saber o endereço IP público um do outro, e de fazer suas conexões passarem incólumes pelos roteadores, que não precisam mais ser configurados especificamente para cada computador ou serviço online1.

Essa forma é tipicamente usada em serviços como o compartilhamento de tela, realizado a partir do Finder, como no exemplo abaixo, que mostra onde eu clicaria para acessar "da rua" o compartilhamento de tela do Mac do meu escritório:

Os mesmos recursos facilitadores que permitem esse tipo de conexão também podem ser usados para abrir uma sessão SSH entre 2 Macs, mesmo que estejam em redes diferentes, bastando que ambos usem o Voltar ao Meu Mac (BTTM) com um mesmo Apple ID.

Para fazer isso visualmente, basta ir no Terminal (o original que vem com o OS X) e selecionar a opção Shell ➡ Nova Sessão Remota. Vai aparecer a tela a seguir, mostrando os Macs que usam o mesmo Apple ID no BTTM, e a partir daí é só selecionar.

Se tudo o que você queria era abrir conexões SSH interativas no Terminal, pode parar de ler por aqui. Mas ainda podemos fazer mais operações aproveitando a mesma infraestrutura 😃

Seu computador tem hostname e domínio próprios e você nem sabia?

A parte mais complicada da mágica ocorre simplesmente descobrindo a identificação do seu computador no esquema de DNS específico do Voltar ao Meu Mac.

É isso mesmo: todo Apple ID conectado ao Voltar ao Meu Mac (BTTM) recebe automatimente um nome de domínio (interno, exclusivo para uso no sistema), e todo Mac que usa esse Apple ID no BTTM ganha automaticamente uma identificação nesse domínio.

Por exemplo, o domínio criado automaticamente pelo BTTM para o meu Apple ID é 7031325785.members.btmm.icloud.com, e cada um dos meus Macs ganha automaticamente um hostname nele, baseado no nome do próprio computador definido nas Preferências. Tenho, assim, computadores que reconhecem uns aos outros pelos seguintes nomes:

  • Homeoffice.7031325785.members.btmm.icloud.com
  • MacBlade.7031325785.members.btmm.icloud.com
  • mac-mini-de-augusto.7031325785.members.btmm.icloud.com

Mas não são hostnames comuns: eles só são utilizáveis por outros Macs que usem o mesmo Apple ID no Voltar ao Meu Mac (BTTM). Assim, se eu estiver "na rua" usando o notebook MacBlade e quiser abrir uma sessão SSH com o Mac do escritório, basicamente eu digitaria, no Terminal, ssh Homeoffice.7031325785.members.btmm.icloud.com, e o sistema abriria a conexão como se estivéssemos tratando de um hostname "comum", com a vantagem extra de não precisar configurar NAT no roteador do escritório.

Para descobrir qual o seu domínio pessoal no Voltar ao Meu Mac, abra um Terminal e digite o comando dns-sd -E, que vai mostrar toda uma hierarquia de informações, sendo que a que nos interessa é o número que aparece na última linha, em vermelho no quadro abaixo:

dns-sd -E
Looking for recommended registration domains:
DATE: ---Thu 19 Dec 2013---
19:36:54.905  ...STARTING...
Timestamp     Recommended Registration domain
19:36:54.906  Added     (More)               local
19:36:54.906  Added                          icloud.com
                                             - > btmm
                                             - - > members
                                             - - - > 7031325785

(O comando dns-sd tem uma peculiaridade: a execução dele nunca encerra sozinha, você precisará pressionar Control+C para encerrá-lo.)

De posse do número, que no exemplo acima eu marquei em vermelho, é fácil descobrir o seu domínio completo: é sempre o número, seguido de .members.btmm.icloud.com. No exemplo acima, o domínio correspondente é, portanto, 7031325785.members.btmm.icloud.com.

Para saber o nome específico de cada um dos seus Macs, basta colocar o nome dele (que você encontra em Preferências do Sistema ➡ Compartilhamento) como prefixo ao domínio, substituindo espaços por traços, se for o caso. Assim, o meu MacBook cujo nome é MacBlade será MacBlade.7031325785.members.btmm.icloud.com.

Esse nome pode ser usado para abrir sessões SSH (tanto sessões interativas como as de túneis ou das variadas operações criativas que o SSH intermedia), como já vimos, e também para várias outras atividades que você possa querer realizar mas – lembrando – só funcionará no âmbito de Macs que estejam participando do Voltar ao Meu Mac com um mesmo Apple ID.

Se não funcionar de primeira (para mim sempre funcionou), veja o guia da Apple para resolução de problemas com o Voltar ao Meu Mac, que trata tanto do que pode ser verificado no Mac em si, quanto do que precisa estar ativo nos roteadores.

Para encerrar, um detalhe importante: esse nome de domínio é permanente, não é dinâmico. Uma vez que você o conheça, nada impede que você o insira em scripts, ou no seu arquivo .ssh_config, ou o anote, ou faça o que quiser para evitar ter de decorá-lo ou ter de consultá-lo novamente sempre que quiser usar.

 
  1.  Mas os roteadores precisam permitir o uso do UPnP, que é bastante comum em roteadores atuais – veio ativado até no roteador "grátis" que o meu provedor forneceu.

Comentar

Comentários arquivados

Mais acessados:

Artigos recentes: