Acessando computadores remotos protegidos por NAT ou firewall com túnel SSH reverso direcionado por DNS dinâmico
Com esse artigo pretendo mostrar uma maneira prática de acessar computadores protegidos por uma firewall ou NAT. Isso é muito útil nos casos em que não é possível - ou não se tem o controle para - efetuar um direcionamento de portas para a máquina desejada. É apresentado ainda um script que, utilizando DNS dinâmico, permite estabelecer essa conexão de qualquer lugar.
Parte 4: Configuração da máquina cliente
1. Na máquina cliente você deve criar o usuário tunnel - de preferência com shell direcionado para /bin/false, uma vez que não desejamos que alguém no servidor consiga abrir um shell interativo em sua máquina cliente:
# adduser tunnel
2. Crie um par de chaves para o usuário tunnel na máquina cliente. Assim, mesmo que não as utilizemos, o diretório /home/tunnel/.ssh será criado com as permissões corretas, para armazenarmos a chave pública do usuário tunnel do servidor:
# su tunnel
$ ssh-keygen -t dsa
3. Copie a chave pública do usuário tunnel do servidor (provavelmente armazenada em /home/tunnel/.ssh/id_dsa.pub) para o arquivo authorized_keys do usuário tunnel na máquina cliente. Isso pode ser feito de várias formas, dependendo do acesso que se tem ao servidor quando o sistema estiver sendo preparado. Se você está se metendo com SSH reverso provavelmente já está cansado de fazer isso, mas ai vão algumas dicas para os iniciantes. Caso se tenha conexão direta no momento da preparação, pode-se fazê-lo via SSH mesmo (a partir do cliente):
ssh tunnel@servidor cat /home/tunnel/.ssh/id_dsa.pub > /home/tunnel/.ssh/authorized_keys
ou, se não, copiando-se o arquivo id_dsa.pub via pen-drive (supondo que a mesma esteja montada em /mnt/memory):
cat /mnt/memory/id_dsa.pub > /home/tunnel/.ssh/authorized_keys
# adduser tunnel
2. Crie um par de chaves para o usuário tunnel na máquina cliente. Assim, mesmo que não as utilizemos, o diretório /home/tunnel/.ssh será criado com as permissões corretas, para armazenarmos a chave pública do usuário tunnel do servidor:
# su tunnel
$ ssh-keygen -t dsa
3. Copie a chave pública do usuário tunnel do servidor (provavelmente armazenada em /home/tunnel/.ssh/id_dsa.pub) para o arquivo authorized_keys do usuário tunnel na máquina cliente. Isso pode ser feito de várias formas, dependendo do acesso que se tem ao servidor quando o sistema estiver sendo preparado. Se você está se metendo com SSH reverso provavelmente já está cansado de fazer isso, mas ai vão algumas dicas para os iniciantes. Caso se tenha conexão direta no momento da preparação, pode-se fazê-lo via SSH mesmo (a partir do cliente):
ssh tunnel@servidor cat /home/tunnel/.ssh/id_dsa.pub > /home/tunnel/.ssh/authorized_keys
ou, se não, copiando-se o arquivo id_dsa.pub via pen-drive (supondo que a mesma esteja montada em /mnt/memory):
cat /mnt/memory/id_dsa.pub > /home/tunnel/.ssh/authorized_keys