quarta-feira, julho 27, 2011

SSH Tunneling Duplo: parece mágica, mas é apenas uma boa ferramenta!!!


Muitas vezes, pode ocorrer de você ter apenas acesso SSH a um servidor e deseja acessar outro serviço da máquina, sendo que a porta desse serviço está bloqueada no firewall. Para estas situações, o SSH oferece uma funcionalidade que parece mágica: tunneling.

O tunneling consiste em configurar seu cliente SSH para capturar os pacotes de uma determinada porta TCP local e encaminhar para outra porta no servidor remoto, sendo necessário acesso por alguma conta SSH no servidor. O cenário final seria o descrito na figura abaixo.


E qual seria o comando para fazer essa mágica? Simples:

$ ssh -f usuario@remota.com -L 8000:remota.com:80 -N

Com esse comando, será requisitada a senha para 'usuario' em 'remota.com'. Após informada, você poderá acessar o servidor web em 'remota.com' através de http://localhost:8000.

Mas vamos enfeitar uma situação mais complicada. Digamos que no seu escritório/laboratório/etc você tenha uma máquina que chamaremos de DMZ, com IP válido e acessível pela Internet, mas também com acesso aos endereços da rede local. E você de casa, deseja acessar um servidor web que está na sua estação de trabalho no laboratório, que só tem um IP local. Claro que você poderia brincar com o iptables, mas o SSH também pode oferecer uma solução rápida. Considere o esquema abaixo.


Chamo esse esquema de SSH Tunneling Duplo. O comando para este cenário seria:

$ ssh -t -L 8000:localhost:8000 usuario@dmz.com 'ssh -L 8000:workstation:80 usuario@workstation'

Detalhe: agora duas senhas serão pedidas. A primeira para 'usuario' em 'dmz.com' e a outra para 'usuario' em 'workstation'. Depois disso, http://localhost:8000 vai te dar acesso ao servidor web em 'workstation'. O SSH faz coisa, cada dia descobrindo mais. Até a próxima....





Post a Comment

Nenhum comentário: