Pesquisa de site

Como criar túnel SSH ou encaminhamento de porta no Linux


O túnel SSH (também conhecido como encaminhamento de porta SSH) é simplesmente rotear o tráfego da rede local através de SSH para hosts remotos. Isso implica que todas as suas conexões são protegidas por criptografia. Ele fornece uma maneira fácil de configurar uma VPN (Rede Privada Virtual) básica, útil para conectar-se a redes privadas em redes públicas inseguras, como a Internet.

Você também pode ser usado para expor servidores locais atrás de NATs e firewalls à Internet através de túneis seguros, conforme implementado no ngrok.

As sessões SSH permitem encapsular conexões de rede por padrão e há três tipos de encaminhamento de porta SSH: local, remoto e dinâmico > encaminhamento de porta.

Neste artigo, demonstraremos como configurar de forma rápida e fácil o tunelamento SSH ou os diferentes tipos de encaminhamento de porta no Linux.

Ambiente de teste:

Para os fins deste artigo, estamos usando a seguinte configuração:

  1. Host local: 192.168.43.31
  2. Host remoto: Linode CentOS 7 VPS com nome de host server1.example.com.

Normalmente, você pode conectar-se com segurança a um servidor remoto usando SSH da seguinte maneira. Neste exemplo, configurei o login SSH sem senha entre meus hosts locais e remotos, portanto, não foi solicitada a senha do usuário administrador.

ssh [email   

Encaminhamento de porta SSH local

Este tipo de encaminhamento de porta permite conectar-se do computador local a um servidor remoto. Supondo que você esteja protegido por um firewall restritivo ou bloqueado por um firewall de saída para acessar um aplicativo em execução na porta 3000 do seu servidor remoto.

Você pode encaminhar uma porta local (por exemplo, 8080) que pode ser usada para acessar o aplicativo localmente da seguinte maneira. O sinalizador -L define a porta encaminhada para o host remoto e a porta remota.

ssh [email  -L 8080:server1.example.com:3000

Adicionar o sinalizador -N significa não executar um comando remoto, você não obterá um shell neste caso.

ssh -N [email  -L 8080:server1.example.com:3000

A opção -f instrui o ssh a ser executado em segundo plano.

ssh -f -N [email  -L 8080:server1.example.com:3000

Agora, na sua máquina local, abra um navegador, ao invés de acessar a aplicação remota usando o endereço server1.example.com:3000, você pode simplesmente usar localhost:8080 ou 192.168.43.31:8080, conforme mostrado na imagem abaixo.

Encaminhamento de porta SSH remoto

O encaminhamento remoto de porta permite que você se conecte da sua máquina remota ao computador local. Por padrão, o SSH não permite o encaminhamento remoto de porta. Você pode ativar isso usando a diretiva GatewayPorts no arquivo de configuração principal do SSHD /etc/ssh/sshd_config no host remoto.

Abra o arquivo para edição usando seu editor de linha de comando favorito.

sudo vim /etc/ssh/sshd_config 

Procure a diretiva necessária, remova o comentário e defina seu valor como yes, conforme mostrado na captura de tela.

GatewayPorts yes

Salve as alterações e saia. Em seguida, você precisa reiniciar o sshd para aplicar as alterações feitas recentemente.

sudo systemctl restart sshd
OR
sudo service sshd restart 

Em seguida, execute o seguinte comando para encaminhar a porta 5000 na máquina remota para a porta 3000 na máquina local.

ssh -f -N [email  -R 5000:localhost:3000

Depois de compreender esse método de tunelamento, você poderá expor de maneira fácil e segura um servidor de desenvolvimento local, especialmente atrás de NATs e firewalls, à Internet por meio de túneis seguros. Túneis como Ngrok, pagekite, localtunnel e muitos outros funcionam de maneira semelhante.

Encaminhamento de porta SSH dinâmico

Este é o terceiro tipo de encaminhamento de porta. Ao contrário do encaminhamento de porta local e remoto, que permite a comunicação com uma única porta, ele possibilita uma gama completa de comunicações TCP em uma variedade de portas. O encaminhamento de porta dinâmico configura sua máquina como um servidor proxy SOCKS que escuta na porta 1080, por padrão.

Para começar, SOCKS é um protocolo de Internet que define como um cliente pode se conectar a um servidor através de um servidor proxy (SSH neste caso). Você pode ativar o encaminhamento dinâmico de porta usando a opção -D.

O comando a seguir iniciará um proxy SOCKS na porta 1080, permitindo que você se conecte ao host remoto.

ssh -f -N -D 1080 [email 

A partir de agora, você pode fazer com que os aplicativos em sua máquina usem este servidor proxy SSH editando suas configurações e configurando-os para usá-lo, para se conectar ao seu servidor remoto. Observe que o proxy SOCKS irá parar de funcionar depois que você fechar sua sessão SSH.

Leia também: 5 maneiras de manter sessões SSH remotas em execução após fechar o SSH

Resumo

Neste artigo, explicamos os vários tipos de encaminhamento de porta de uma máquina para outra, para encapsular o tráfego através da conexão SSH segura. Este é um dos muitos usos do SSH. Você pode adicionar sua voz a este guia por meio do formulário de feedback abaixo.

Atenção: O encaminhamento de porta SSH tem algumas desvantagens consideráveis, pode ser abusado: pode ser usado para contornar programas de monitoramento de rede e filtragem de tráfego (ou firewalls). Os invasores podem usá-lo para atividades maliciosas. Em nosso próximo artigo, mostraremos como desabilitar o encaminhamento de porta local SSH. Permaneça conectado!