usando ssh para criar um tunel reverso
Semana passada estavamos (eu e meus amigos de irc) tentando ajudar um colega que estava com um determinado problema. Como ele estava utilizando uma máquina atrás de um firewall e ele não tinha acesso para fazer qualquer redirecionamento para esta máquina, falamos para ele criar um tunel reverso com ssh para conectarmos na máquina que ele estava e poder ajudá-lo com o problema que ele enfrentava.
Baseado no relato acima, vamos supor que tenho um servidor remoto cujo ip é 187.10.223.67, que a porta do ssh é a 22 (padrão) e que meu usuário remoto é but3k4, iremos utilizar as seguintes opções do ssh:
C - usa compactação de todos os dados que serão trafegados, muito útil para economizar banda. N - não executa comandos no servidor remoto, portanto o usuário não precisa ter shell. f - logo após conectar, coloca a conexão em background. R - especifica qual porta irei ouvir no servidor remoto, em qual ip ela será listada e para qual porta do servidor local ela será redirecionada.
Agora, sabendo tudo que irei utilizar, peço para meu amigo digitar:
ssh -C -N -f -R 4444:localhost:22 but3k4@187.10.223.67
Com o comando acima, a porta 22 da máquina local, será listada automaticamente no loopback (127.0.0.1), na porta 4444 do ip 187.10.223.67.
Com isso, eu poderei conectar na máquina dele digitando:
ssh -p 4444 localhost -l root
Simples né? Túneis ssh são muito úteis e seu funcionamento como você mesmo viu é bem simples. Então, bom proveito.
Poxa, funcionou diretinho, mas tenho uma pergunta… aqui usamos a ideia de usar a conexao para o SSH, mas e se eu quizesse por FTP, VNC ou MySQL?
Como eu poderia proceder?
Obrigado pela atencao.
Herinque Noslidan
18 Nov 09 at edit_comment_link(__('Edit', 'sandbox'), ' ', ''); ?>
A lógica é a mesma, basta trocar a porta 22, para a porta que você quizer, por exemplo:
ssh -C -N -f -R 4444:localhost:21 but3k4@187.10.223.67
Ele irá fazer um túnel reverso no ip 187.10.223.67 da porta 21 para a porta 4444
but3k4
18 Nov 09 at edit_comment_link(__('Edit', 'sandbox'), ' ', ''); ?>