Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota

O SSH (Secure Shell) possibilita conexões seguras entre máquinas em redes locais e remotas. Um dos recursos menos conhecidos, mas extremamente útil, é o túnel SSH reverso, que permite que uma máquina remota acesse a sua máquina local, mesmo que esta esteja por trás de um firewall ou roteador NAT.

[ Hits: 6.856 ]

Por: Fábio Berbert de Paula em 09/10/2024 | Blog: https://fabio.automatizando.dev


Introdução



O que é um Túnel SSH Reverso?

Normalmente, o SSH é usado para conectar-se a um servidor remoto a partir de uma máquina local. Um túnel SSH reverso inverte essa lógica: você se conecta a um servidor remoto e cria um túnel de volta para sua máquina local, tornando-a acessível através de uma porta definida no servidor remoto.

Este método é particularmente útil em cenários onde a máquina local está protegida por firewall ou NAT, tornando-a inacessível diretamente por IP público.

Pré-requisitos

  • Acesso de superusuário (root ou sudo) na máquina local.
  • SSH habilitado e configurado tanto na máquina local quanto no servidor remoto.
  • Acesso a um servidor remoto com IP público.

No meu caso, possuo um servidor remoto configurado na Amazon Web Services (AWS) com um IP público. Meu computador local é inacessível diretamente pela internet, pois está protegido por um firewall do provedor de internet. Sempre que estou em viajem ou fora de casa e preciso acessar meu computador local, uso um túnel SSH reverso para conectar-me a ele a partir do servidor remoto.

Toda vez que vou me ausentar, já abro o túnel SSH reverso para garantir que eu possa acessar minha máquina local remotamente.

Etapa 1: Habilitar o Redirecionamento de Porta no SSH

A primeira etapa é habilitar o redirecionamento de portas na sua máquina local. Isso permite que o túnel SSH crie uma conexão que será aberta no servidor remoto, mas que redirecionará o tráfego para sua máquina local.

Na Máquina Local:

1. Abra o arquivo de configuração do SSH:

Para configurar o SSH e permitir o túnel reverso, edite o arquivo de configuração do servidor SSH na sua máquina local:

sudo vim /etc/ssh/sshd_config

2. Habilite o redirecionamento de portas:

Adicione ou descomente a seguinte linha no arquivo:

GatewayPorts yes

Isso permite que o SSH aceite conexões externas nas portas redirecionadas.

3. Reinicie o serviço SSH:

Após modificar o arquivo de configuração, é necessário reiniciar o serviço SSH para que as mudanças tenham efeito:

sudo service ssh restart

Etapa 2: Abrir o Túnel SSH Reverso

Agora, precisamos abrir o túnel SSH reverso, conectando-se ao servidor remoto e especificando a porta que será usada para redirecionar o tráfego de volta para sua máquina local.

Na Máquina Local:

1. Conecte-se ao servidor remoto com redirecionamento de porta:

Execute o seguinte comando a partir da sua máquina local para iniciar a sessão SSH reversa:

ssh -R 2222:localhost:22 user@remote_host

Neste comando:
  • -R 2222:localhost:22: Define o redirecionamento de porta reversa. A porta 2222 no servidor remoto será redirecionada para a porta 22 da sua máquina local (que é a porta do serviço SSH). Você pode substituir a porta 2222 por qualquer outra porta de sua escolha.
  • user@remote_host: Substitua "user" pelo nome de usuário no servidor remoto e "remote_host" pelo IP ou nome de domínio do servidor remoto.

Você abriu uma sessão SSH reversa com o servidor remoto. Mantenha esta sessão aberta para manter o túnel ativo.

Agora, qualquer conexão feita para o servidor remoto na porta 2222 será redirecionada para a porta 22 da sua máquina local.

Etapa 3: Acessar a Máquina Local a Partir da Máquina Remota

Depois de configurar o túnel SSH reverso, qualquer pessoa com acesso ao servidor remoto pode acessar sua máquina local usando o redirecionamento que você configurou.

Na Máquina Remota:

1. Abra um terminal na máquina remota (o servidor remoto em que você configurou o túnel).

2. Conecte-se à sua máquina local via SSH:

Execute o seguinte comando na máquina remota:

ssh -p 2222 user@localhost

Aqui:
  • -p 2222: Especifica a porta que está sendo usada no servidor remoto para o redirecionamento (neste caso, 2222).
  • user: O nome de usuário da máquina local (não do servidor remoto).
  • localhost: Referencia o próprio servidor remoto, pois a conexão é redirecionada através da porta 2222 para sua máquina local.

Agora, você estará conectado à sua máquina local a partir do servidor remoto.

Como Funciona o SSH Reverso?

O túnel SSH reverso redireciona o tráfego entre duas máquinas, permitindo que você se conecte a uma máquina local a partir de uma máquina remota. No exemplo acima, quando você se conecta ao servidor remoto com o redirecionamento de porta configurado, o servidor remoto cria uma "ponte" que encaminha todas as conexões feitas na porta 2222 para a porta 22 (SSH) da sua máquina local.

Cenários de Uso

  • Trabalhar em ambientes protegidos por firewall: Se você estiver em uma rede protegida que não permite conexões de entrada, o túnel SSH reverso permite que um servidor externo tenha acesso à sua máquina.
  • Suporte remoto: Técnicos podem usar túneis SSH reversos para acessar máquinas locais de clientes sem precisar configurar diretamente o roteamento ou firewall no lado do cliente.
  • Desenvolvimento e depuração: Em ambientes de desenvolvimento, você pode acessar serviços que estão rodando em sua máquina local a partir de servidores externos, facilitando testes em rede.

Considerações de Segurança

Embora o túnel SSH reverso seja uma ferramenta poderosa, é importante configurá-lo com cuidado para evitar brechas de segurança:
  • Autenticação por chave SSH: Use autenticação baseada em chave pública em vez de senhas, para garantir uma camada adicional de segurança.
  • Firewall: Certifique-se de que apenas IPs autorizados possam acessar as portas abertas para redirecionamento no servidor remoto.
  • Monitoramento: Mantenha logs de conexões e monitore atividades suspeitas no servidor remoto e na máquina local.

Conclusão

Criar um túnel SSH reverso é uma maneira eficaz de acessar uma máquina local que esteja por trás de firewalls ou roteadores NAT. Com alguns ajustes na configuração do SSH, você pode tornar sua máquina local acessível a partir de um servidor remoto e permitir acesso seguro para quem precisa. Sempre garanta que você siga as melhores práticas de segurança ao utilizar essas técnicas, especialmente quando expor sua máquina para redes externas.

Agora que você entende como o SSH reverso funciona, você pode utilizá-lo em diversas situações, facilitando o acesso remoto e a resolução de problemas de conectividade.

   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

cpulimit - Limitando o uso da CPU por processo

Baixar posts do Instagram usando Python

Criando gráficos com a classe JPGraph (parte 1)

Diversão e Entretenimento no Linux

Verificando integridade de servidores POP com PHP/sockets

Leitura recomendada

Debian 9: como instalar TL-WN823N v2 (TP-LINK)

FAN Nagios - Tela inicial do Nagios

Instalação do OCS Inventory (última versão, 2.9.2 - 2022) no Debian 11

Acesso remoto entre GNU/Linux e Windows

Análise de Desempenho: Web API

  
Comentários
[1] Comentário enviado por maurixnovatrento em 11/10/2024 - 15:50h

Ótimo artigo.
______________________________________________________________________
Inscreva-se no meu Canal: https://www.youtube.com/@LinuxDicasPro
Repositório GitHub do Canal: https://github.com/LinuxDicasPro
Grupo do Telegram: https://t.me/LinuxDicasPro
Meu GitHub Pessoal: https://github.com/mxnt10


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts