Túnel SSH reverso

By | October 7, 2010

Dica rápida e muito útil:

Se você já precisou acessar um servidor Linux atrás de um NAT sobre qual você não tem controle sabe como seria bom poder iniciar a conexão do lado do servidor conectando de volta em você.

Isso é possível com um túnel SSH reverso. A idéia é que o servidor que você deseja acessar inicia a conexão do lado dele, conecta-se na sua máquina e disponibiliza, via túnel SSH uma porta de volta pra ele.

Eu uso isso como um acesso rápido de casa para a empresa naqueles casos onde preciso só acessar rapidamente alguma coisa vinha linha de comando. Tenho acesso VPN se precisar de email, Terminal Services, etc. Seria possível fazer tudo via túnel, mas ai o desempenho não fica grandes coisas e nem é tão conveniente.

O comando (a ser executado do servidor atrás do NAT) é:

ssh -nNT -R 2222:localhost:22 username@suamaquina

Uma vez estabelecido o túnel você pode conectar de volta à partir da sua máquina utilizando:

ssh -p 2222 username@localhost

Como é possível que a conexão caia, o processo trave ou sei lá o que mais, recomendo os seguintes truques:

  • Use chaves públicas para autenticação, assim não precisa de senha
  • Rode a sessão inicial dentro do screen, isso evita perder o console
  • Rode o túnel dentro de um loop while, pro processo poder ser restaurado caso morra
  • Pra evitar alguém te sacanear crie um usuário dedicado pra essa conexão e aponte o shell dele para /bin/false

Related posts

One thought on “Túnel SSH reverso

  1. David

    Você pode também fazer um netcat reverso criptografado ou usar cryptcat também 😉

Comments are closed.