Tunelamento com Putty

Thiago Marangoni Zerbinato
Última atualização: 16.10.2004



Introdução

Hoje vamos aprender como criar um tunel através do ssh (porta 22).

Para que Serve ?

Bem, eu uso para administracão remota de bancos oracle, mas acho um pouco mais complicado explicar isso agora, por isso vou demostrar como acessar o Terminal Service do Windows em uma máquina em que não temos acesso remoto. Vamos supor que você tenha acesso a um servidor linux via ssh é óbvio, que vamos chamar de Servidor A, nele você possui uma conta de usuário "mortal" e você quer acessar o servidor B (Windows 2000 Server) via Terminal Service. Qual seria o procedimento padrão que você tomaria ? Bem, creio que se você é o administrador do Servidor A e tem acesso como root, você poderia usar o iptables e fazer um redirect para o Servidor B, certo ? Mas e se você é um mero mortal ? Você responderia ... "Agora Fu#$@#$@ ! Não tem como !"

Bem tem sim ! Como ? Através de um túnel ssh. Isso mesmo, o ssh permite que você trafegue dados de outra porta por dentro dele mesmo, ou seja, por dentro da porta 22. Uma explicação mais técnica pode ser obtida em Dicas-l. Bem vamos a prática.

Ambiente

Nosso ambiente é o seguinte:

Servidor A Servidor B
SO Linux Windows 2000
IP 192.168.1.1 192.168.1.183
Serviço sshd Terminal Service

OBS: A porta do Terminal Service é 3389.

Download do Putty

Antes de mais faça o download do Putty em http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html.

Mãos na Massa, ou melhor, no teclado ;)

1. Execute o putty e coloque o IP do servidor de destino, em nosso caso o IP do servidor A.

2. Clique na opção SSH e habilite a "Enable Compression", isto vai melhor o desempenho na transmissão dos dados.

3. Clique em "Tunnels", e em "Source port", coloque uma porta qualquer, pode até mesmo ser a porta do Terminal Service (3389), mas para ficar mais claro vamos usar a porta 20000. Em "Destination", coloque o IP e a Porta do servidor que queremos acessar, em nosso caso, o IP do Servidor B. Após concluir clique em "Add".

Onde: Source port: É a porta que vamos chamar localmente. Destination: É o IP seguido de : (Dois pontos) pela porta que queremos acessar na rede de destino.

4. Volte na opção "Session" e a salve com um nome qualquer e clique em "Open".

5. Conecte-se ao servidor A com seu usuário "mortal" e minimize a tela.

6. Agora vamos testar se nossa porta 20000 esta "ouvindo" nossa conexão. Para isso, use o comando netstat -a, note na figura abaixo meu hostname (thor) seguido pela porta 20000 e na frente a palavra LISTENING. Isto quer dizer que existe uma porta local 2000 aguardando por conexões.

7. Agora vamos chamar a porta 20000 localmente, como figura abaixo.

8. Pronto !!! E la estamos, na tela de logon do servidor B !!!!

Conclusão

O ssh é fantástico e esse recurso pode ajudar muita gente com vários outros tipos de serviços. Eu uso esse esquema para acessar o Oracle remotamente. Agora é só viajar nas possibilidades.

Dúvidas escrevam para thiagozerbinato@yahoo.com.br!