Olá. Esse artigo tem o propósito mostrar como alterar as configurações de tunelamento em
SSH sem a necessidade de fechar e abrir uma nova conexão.
Estamos partindo do pressuposto que você saiba o que é SSH e que saiba como acessar um terminal através dele. Espero que você também saiba como funciona o
forward (tunneling) do SSH. Mas se não sabe, não se preocupe, vou fazer uma breve introdução do que é.
O
forward do SSH permite que você forneça portas da sua máquina. Neste exemplo, minha máquina (com Apache) está fornecendo web ao servidor SSH:
# ssh -R 80:IP_Servidor_SSH_Minha_Empresa:80 meu_usuario@IP_Servidor_SSH_Minha_Empresa
Ou, solicite acesso às portas através do servidor SSH.
Nesse exemplo, ao acessar 127.0.0.1:3389, estarei conectando ao Remote Desktop do Servidor Windows da Empresa.
# ssh -L 3389:IP_Servidor_Windows_Empresa:3389 meu_usuario@IP_Servidor_SSH_Minha_Empresa
Funcionando como um túnel para acesso à outras máquinas remotas, ou ao próprio servidor SSH. Aprenda mais sobre SSH, em:
Como o objetivo não é te ensinar a usar o
forward, mas sim mostrar como mudar o túnel sem interromper a conexão, seguiremos em frente.
Como fazer
Para os que utilizam o
putty, já sabem que é fácil adicionar ou remover uma configuração de tunelamento. Mas se você não está utilizando GUI, então provavelmente estará utilizando a linha de comando "ssh", como mostrado nos exemplos anteriores.
O SSH permite que você altere as configurações de túnel usando o caractere de escape (que por padrão é "~", sem aspas) e o caractere "C" (maiúsculo e também sem aspas). Caso não funcione, de um
Enter antes de fazer a sequência de caracteres. E certifique-se de não ter digitado com erro (não adianta usar "backspace", ao invés disso aperte
Enter e tente novamente). Se você ainda não conseguiu, mais a frente vou dar o "pulo do gato".
Com isso, você irá obter uma linha, que será apresentada assim:
ssh>
Então, poderá digitar os seguintes comandos:
ssh>
help
Commands:
-L[bind_address:]port:host:hostport Request local forward
-R[bind_address:]port:host:hostport Request remote forward
-D[bind_address:]port Request dynamic forward
-KL[bind_address:]port Cancel local forward
-KR[bind_address:]port Cancel remote forward
-KD[bind_address:]port Cancel dynamic forward
O "pulo do gato"
O que motivou a escrever esse artigo, foi justamente o "pulo do gato" que não encontrei em nenhum outro documento.
Considerando que seu teclado está configurado para o padrão brasileiro, seu teclado não aceita "~"+"C", isso não existe na língua portuguesa. No teclado americano, quando você digita "~", na mesma hora entende que você quer escrever somente o "~". No teclado brasileiro, ele acha que você pode combinar o "~" com outra vogal ou a letra n.
Pronto, nisso ele já ferrou com os brasileiros.
Então, você pensa: Vou limpar a linha com o
Enter, apertar o "~" e dar espaço até ele aparecer. Iria funcionar, mas não funcionou. Já que ao fazer isso, o computador exibiu "~ " (til seguido de espaço) e quando você apagou o espaço e colocou o "C" não funcionou.
Vamos agora para o correto. Limpe a linha apertando
Enter, aperte o "~", em seguida 1 (UM) "espaço", você não verá nada na tela e, por fim, aperte o "C" (lembrando que é maiúsculo e sem aspas). E pronto!
Achou tudo isso muito chato de fazer? Você tem a opção de antes de iniciar a conexão SSH utilizar o parâmetro "-e" (caractere de escape). Exemplo:
# ssh -e! meu_usuário@IP_Servidor_SSH
Então, ao invés de usar "~C" você irá usar "!C".
Espero ter ajudado!