Categories: Tecnologia

O que é encapsulamento SSH reverso? (e como usá-lo)

Eny Setiyowati / Shutterstock.com

Precisa de SSH para um computador Linux inacessível? Faça com que ele ligue para você e então abra essa conexão para obter sua própria sessão SSH remota. Nós mostramos como.

Quando você quiser usar o túnel SSH reverso

Às vezes, os computadores remotos podem ser difíceis de alcançar. O site em que eles estão localizados pode ter regras de firewall rígidas, ou talvez o administrador local tenha configurado regras complexas de tradução de endereços de rede . Como você acessa esse computador se precisar se conectar a ele?

Vamos estabelecer alguns rótulos. Seu computador é o computador local porque está perto de você. O computador ao qual você vai se conectar é o computador remoto porque está em um local diferente do seu.

Para diferenciar entre os computadores locais e remotos usados ​​neste artigo, o computador remoto é chamado de “howtogeek” e está executando o Ubuntu Linux (com janelas de terminal roxas). O computador local é chamado de “Sulaco” e está executando o Manjaro Linux (com janelas de terminal amarelas).

Normalmente, você iniciaria uma conexão SSH do computador local e se conectaria ao computador remoto. Essa não é uma opção no cenário de rede que estamos descrevendo. Na verdade, não importa qual é o problema de rede específico – isso é útil sempre que você não pode usar o SSH direto para um computador remoto.

Mas se a configuração de rede do seu lado for direta, o computador remoto pode se conectar a você. No entanto, isso por si só não é suficiente para suas necessidades, porque não fornece uma sessão de linha de comando funcional no computador remoto. Mas é um começo. Você estabeleceu uma conexão entre os dois computadores.

A resposta está no tunelamento SSH reverso.

O que é encapsulamento SSH reverso?

O tunelamento SSH reverso permite que você use essa conexão estabelecida para configurar uma nova conexão do computador local de volta ao computador remoto.

Como a conexão original veio do computador remoto para você, usá-la para ir na outra direção é usá-la “ao contrário”. E como o SSH é seguro, você está colocando uma conexão segura dentro de uma conexão segura existente. Isso significa que sua conexão com o computador remoto atua como um túnel privado dentro da conexão original.

E assim chegamos ao nome “tunelamento SSH reverso”.

Como funciona?

O encapsulamento SSH reverso depende do computador remoto usando a conexão estabelecida para ouvir novas solicitações de conexão do computador local.

O computador remoto escuta em uma porta de rede no computador local. Se ele detectar uma solicitação SSH para essa porta, retransmitirá essa solicitação de conexão de volta para si mesmo, descendo a conexão estabelecida. Isso fornece uma nova conexão do computador local para o computador remoto.

É mais fácil de configurar do que descrever.

Usando SSH Reverse Tunneling

O SSH já estará instalado em seu computador Linux, mas você pode precisar iniciar o daemon SSH (sshd) se o computador local nunca tiver aceitado conexões SSH antes.

sudo systemctl start sshd

Para que o daemon SSH seja iniciado sempre que você reinicializar o computador, use este comando:

sudo systemctl enable sshd

No computador remoto, usamos o seguinte comando.

  • A -Ropção (reversa) informa sshque novas sessões SSH devem ser criadas no computador remoto.
  • O “43022: localhost: 22” informa  sshque as solicitações de conexão para a porta 43022 no computador local devem ser encaminhadas para a porta 22 no computador remoto. A porta 43022 foi escolhida porque está listada como não alocada . Não é um número especial.
  • dave@sulaco.local é a conta de usuário à qual o computador remoto se conectará no computador local.
ssh -R 43022: localhost: 22 dave@sulaco.local

Você pode receber um aviso sobre nunca ter se conectado ao computador local antes. Ou você pode ver um aviso conforme os detalhes da conexão são adicionados à lista de hosts SSH reconhecidos. O que você vê – se houver alguma coisa – depende se as conexões já foram feitas do computador remoto para o computador local.

Será solicitada a senha da conta que está usando para se conectar ao computador local.

Observe que, quando a conexão é feita, o prompt de comando muda de dave @ howtogeek para dave @ sulaco.

Agora estamos conectados ao computador local a partir do computador remoto. Isso significa que podemos emitir comandos para ele. Vamos usar o whocomando para ver os logins no computador local.

Who

Podemos ver que a pessoa com a conta de usuário chamada dave se conectou ao computador local, e o computador remoto se conectou (usando as mesmas credenciais de usuário) do endereço IP 192.168.4.25.

Conectando ao Computador Remoto

Como a conexão do computador remoto foi bem-sucedida e ele está ouvindo conexões, podemos tentar conectar ao computador remoto a partir do local.

O computador remoto está escutando na porta 43022 no computador local. Portanto, um tanto contra-intuitivamente, para fazer uma conexão com o computador remoto, pedimos sshpara fazer uma conexão com o computador local, na porta 43022. Essa solicitação de conexão será encaminhada para o computador remoto.

ssh localhost -p 43022

Somos solicitados a fornecer a senha da conta do usuário e, em seguida, conectados ao computador remoto a partir do computador local. Nosso computador Manjaro felizmente diz, “Bem-vindo ao Ubuntu 18.04.2 LTS”.

Observe que o prompt de comando mudou de dave @ sulaco para dave @ howtogeek. Alcançamos nosso objetivo de fazer uma conexão SSH com nosso computador remoto difícil de alcançar.

Usando SSH com chaves

Para tornar mais conveniente a conexão do computador remoto ao computador local, podemos configurar as chaves SSH.

No computador remoto, digite este comando:

ssh-keygen

Será solicitada uma senha longa. Você pode pressionar Enter para ignorar as perguntas da frase secreta, mas isso não é recomendado. Significaria que qualquer pessoa no computador remoto poderia fazer uma conexão SSH ao seu computador local sem ser desafiado por uma senha.

Três ou quatro palavras separadas por símbolos formarão uma frase-senha robusta.

Suas chaves SSH serão geradas.

Precisamos transferir a chave pública para o computador local. Use este comando:

ssh-copy-id dave@sulaco.local

Será solicitada a senha da conta de usuário na qual você está acessando, neste caso, dave@sulaco.local.

A primeira vez que você fizer uma solicitação de conexão do computador remoto para o computador local, terá que fornecer a senha longa. Você não terá que digitá-lo novamente para solicitações de conexão futuras, enquanto a janela do terminal permanecer aberta.

Nem todos os túneis são assustadores

Alguns túneis podem ser escuros e tortuosos, mas o tunelamento SSH reverso não é muito difícil de navegar se você puder manter a relação entre o computador remoto e o computador local direto em sua cabeça. Em seguida, inverta.

maisroot

Recent Posts

O novo aplicativo “PC Manager” da Microsoft se parece muito com o CCleaner

Muitos aplicativos de limpeza estão disponíveis para Windows ao longo dos anos, mas hoje em…

1 ano ago

Como reiniciar um PS4

Seu PlayStation 4 está congelado? Seus jogos favoritos continuam travando? Reiniciar seu PS4 pode resolver…

1 ano ago

Veja por que as reticências são tão assustadoras ao enviar mensagens de texto…

A popularidade das mensagens de texto significou aprender uma forma totalmente nova de comunicação. Você…

1 ano ago

O telescópio James Webb acaba de capturar os “Pilares da Criação”

A foto dos "Pilares da Criação" tirada pelo Telescópio Espacial Hubble é uma das fotos…

1 ano ago

Você poderá baixar o Proton Drive mais cedo do que pensa

O Proton Drive saiu de seu estágio beta há algumas semanas, mas o aplicativo real…

1 ano ago

Como aumentar o zoom no Photoshop

Para ver suas fotos mais de perto ou para uma edição precisa , você pode…

1 ano ago