NOTÍCIAS

[ANONYMOUS][grids]

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

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

Precisa de SSH para um computador Linux inacessível? Chame você, então faça a conexão para obter sua própria sessão SSH remota. Mostramos a você como.


Quando você quiser usar o tunelamento SSH reverso

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

Vamos criar alguns marcadores. 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 de você.

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 terminais roxas). O computador local é chamado de "Sulaco" e está executando o Manjaro Linux (com janelas de terminal amarelas).

Normalmente, você aciona uma conexão SSH a partir do computador local e se conecta ao computador remoto. Essa não é uma opção no cenário de redes que estamos descrevendo. Realmente, não importa qual é o problema de rede específico - isso é útil sempre que você não pode usar o SSH diretamente em um computador remoto.
Mas se a configuração de rede for simples, o computador remoto pode conecte-se a você. No entanto, isso por si só não é suficiente para as suas necessidades, porque não fornece uma sessão de linha de comando em funcionamento no computador remoto. Mas é um começo. Você tem uma conexão estabelecida entre os dois computadores.
A resposta está no encurtamento reverso do SSH.


O que é tunelamento 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ê, usando-o para ir em outra direção, está usando-o "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 funciona como um túnel privado dentro da conexão original.
E assim chegamos ao nome "tunelamento reverso do SSH".

Como isso funciona?

O tunelamento SSH reverso depende do computador remoto que usa a conexão estabelecida para atender a novas solicitações de conexão do computador local.
O computador remoto escuta em uma porta de rede no computador local. Se detectar uma solicitação SSH para essa porta, ela retransmitirá essa solicitação de conexão para si mesma, até a conexão estabelecida. Isso fornece uma nova conexão do computador local para o computador remoto.
É mais fácil configurar do que descrever.

Usando o encapsulamento reverso do SSH

O SSH já estará instalado no 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 [/ PRE ] 
Para que o daemon SSH comece cada vez que você reiniciar seu computador, use este comando:
 sudo systemctl habilitar sshd 
No computador remoto, usamos o seguinte comando.
  • A opção -R (inversa) diz ao ssh que novas sessões SSH devem ser criadas no computador remoto.
  • O “43022: localhost: 22” informa ao ssh que os pedidos de conexão à porta 43022 no computador local devem ser encaminhados 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. [email protected] é a conta de usuário à qual o computador remoto se conectará no computador local.
 ssh -R 43022: localhost: 22 [email protected] 
IMAGEM_3
Você pode receber um aviso sobre nunca ter se conectado ao computador local antes. Ou você pode ver um aviso à medida que 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 você está usando para se conectar ao computador local. .
Note que quando a conexão foi feita, o prompt de comando muda de dave @ howtogeek para dave @ sulaco.
Agora estamos conectados ao computador local pelo computador remoto. Isso significa que podemos emitir comandos para isso. Vamos usar o comando who para ver os logins no computador local.
 quem 
O que é tunelamento SSH reverso? (e como usá-lo)
Podemos ver que a pessoa com a conta de usuário chamado dave fez login no computador local e o computador remoto se conectou (usando as mesmas credenciais de usuário) ao endereço IP 192.168.4.25.
RELACIONADO: Como determinar a conta de usuário atual no Linux

Conectando ao computador remoto

Como a conexão do computador remoto é bem-sucedida e está atendendo às conexões, podemos tentar conectar ao computador remoto a partir do local.
O computador remoto está escutando na porta 43022 no computador local. Portanto, de forma um tanto contraintuitiva, para estabelecer uma conexão com o computador remoto, solicitamos ao ssh que faça uma conexão com o computador local, na porta 43022. Esse pedido de conexão será encaminhado para o computador remoto.
PRE] ssh localhost-p 43022
IMAGEM_6
A senha da conta do usuário é solicitada e, em seguida, conectada ao computador remoto a partir do computador local. Nosso computador Manjaro 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 estabelecer uma conexão SSH com nosso computador remoto de difícil acesso.


Usando o SSH com as teclas

Para facilitar a conexão do computador remoto para o computador local, podemos configurar chaves SSH.
No computador remoto, digite este comando:
 ssh-keygen 


Você será solicitado a inserir uma frase secreta. Você pode pressionar Enter para ignorar as perguntas da frase secreta, mas isso não é recomendado. Isso significaria que qualquer pessoa no computador remoto poderia estabelecer uma conexão SSH com seu computador local sem ser desafiada por uma senha.
Três ou quatro palavras separadas por símbolos formarão uma senha robusta.

Suas chaves SSH serão geradas.
Precisamos transferir a chave pública para o computador local. Use este comando:
[PRÉ] ssh-copy-id [email protected]


Você será solicitado a fornecer a senha para a conta de usuário você está se logando, neste caso, [email protected].

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


RELACIONADO: Como criar e instalar chaves SSH no Linux Shell


Nem todos os túneis são assustadores

Alguns túneis podem ser escuros e sinuosos, mas o tunelamento reverso do SSH não é muito difícil de navegar se você puder manter o relacionamento entre o computador remoto e computador local direto na sua cabeça. Então inverta-o.