Acessando computadores remotos protegidos por NAT ou firewall com túnel SSH reverso direcionado por DNS dinâmico
Parte 5: Conclusão
Se tudo correu bem, o servidor tentará se conectar ao cliente apontado pelo DNS dinâmico de 1 em 1 minuto. Como a chave pública do usuário tunnel está cadastrada na máquina cliente, a conexão deve ser estabelecida automaticamente, deixando o túnel pronto para você se conectar ao servidor remoto. Podemos verificar se a conexão foi efetuada listando os sockets ocupados máquina cliente (supondo a porta 9000):
socklist | grep 9000
Note que, para ter acesso ao servidor, você deve ter sua própria chave pública cadastrada para o usuário que você deseja assumir nele. Suponho que você já saiba fazer isso para uma conexão SSH direta, então não vou entrar em detalhes. Para efetuar a conexão, basta então rodar o ssh para a porta especificada do localhost, que é a ponta "de cá" do túnel, porém usando o usuário "do lado de lá".
Para esclarecer, digamos que tenho um usuário "claudio" no servidor, para o qual já cadastrei minha chave pública, e que a porta definida para conexão seja a 9000. Assim, para efetuar a conexão pelo cliente, basta executar o seguinte comando:
ssh -p9000 claudio@localhost
Se você quiser acessar o mesmo servidor a partir de outra máquina cliente, você deve repetir o procedimento de configuração do cliente para essa outra máquina, e então alterar o DNS dinâmico para que o hostname apontado por ele corresponda ao IP do novo cliente.
Espero que este artigo ajude a outros que também tenham esbarrado nesse problema incômodo e cada vez mais frequente. :)
Referências: