Como corrigir o erro SSH “Connection Refused” no Linux
SSH é um protocolo de rede que permite acessar e gerenciar com segurança um sistema remoto em uma rede. Ao conectar-se a uma máquina remota via SSH, você pode ter encontrado o erro “conexão recusada”. Enfrentar esse problema pode ser frustrante, especialmente se você for um administrador de sistema e precisar executar algumas tarefas no sistema remoto com urgência.
Vejamos algumas das possíveis causas do erro SSH “conexão recusada” e métodos para resolvê-lo.
1. Verifique se um servidor SSH está instalado
Uma possível causa do erro “conexão recusada” é que a máquina remota não está executando um servidor SSH. Sem o servidor SSH, a máquina não aceitará conexões SSH de entrada e você não poderá acessá-la remotamente.
Portanto, a primeira etapa para solucionar o erro é verificar se um servidor SSH está instalado na máquina remota. Use o seguinte comando para verificar a instalação do servidor SSH:
Em distribuições baseadas no Debian:
dpkg --list | grep ssh
Em distribuições baseadas em RHEL:
yum list installed | grep ssh
No openSUSE:
zypper search -i | grep ssh
Em distribuições baseadas em Arch:
pacman -Q | grep ssh
Se o servidor SSH estiver instalado na máquina remota, você o verá listado na saída. Caso contrário, você deve instalar o servidor OpenSSH na máquina remota que deseja acessar via SSH. OpenSSH é uma versão de código aberto das ferramentas SSH para acesso remoto e controle de sistemas.
Para instalar o servidor OpenSSH, use os seguintes comandos:
Em distribuições baseadas no Debian:
sudo apt install openssh-server
Em distribuições baseadas em RHEL:
sudo yum install openssh-server
No openSUSE:
sudo zypper install openssh
Em distribuições baseadas em Arch:
pacman -S openssh
2. Verifique o status do serviço SSH
Outro motivo para obter o erro “conexão recusada” pode ser que o serviço SSH esteja desativado ou não esteja em execução na máquina remota. Depois de ter certeza de que o servidor SSH está instalado, a segunda coisa que você precisa verificar é o status do servidor.
sudo systemctl status sshd
Se o serviço estiver funcionando, a saída o indicará como ativo (em execução) . Caso contrário, você verá algo como inactive (dead) .
Se o servidor SSH não estiver em execução, você pode iniciá-lo manualmente usando o seguinte comando:
sudo systemctl start sshd
Você também pode ativar o serviço para iniciar automaticamente na inicialização com:
sudo systemctl enable sshd
3. Verifique a porta SSH
Por padrão, o servidor SSH é executado na porta 22. No entanto, pode-se alterar a porta padrão. Portanto, se você receber o erro SSH “conexão recusada”, pode ser porque você está tentando se conectar ao servidor SSH na porta padrão 22 enquanto ele está sendo executado em alguma porta diferente.
Você pode usar o comando netstat com grep para encontrar a porta em que o servidor SSH está escutando:
sudo netstat -plntu | grep ssh
Você também pode encontrar a porta SSH no arquivo sshd_config usando o seguinte comando:
grep port /etc/ssh/sshd_config
Depois de identificar a porta SSH correta, tente conectar-se ao seu sistema remoto usando essa porta específica.
4. Verifique o firewall do sistema
A maioria dos problemas de conectividade ocorre devido ao bloqueio do firewall da sua máquina em algumas portas ou serviços. Se a máquina remota tiver o servidor SSH instalado e em execução, a próxima etapa é verificar seu firewall.
Para descobrir se o firewall está bloqueando a conexão, desative temporariamente o firewall usando os seguintes comandos:
Em distribuições Linux baseadas em Debian e Arch:
sudo ufw disable
Em distribuições baseadas em RHEL e openSUSE:
sudo systemctl disable firewalld
Se o erro não aparecer após desabilitar o firewall, significa que o firewall estava bloqueando a conexão. Nesse caso, reative o firewall e adicione uma regra que permita SSH.
Em distribuições Linux baseadas em Debian e Arch, use o seguinte comando para permitir SSH no firewall UFW:
sudo ufw allow ssh
Como alternativa, você também pode permitir o SSH pelo número da porta no firewall. Digamos que o servidor SSH esteja usando a porta 5555, então você usaria o seguinte comando para permitir no firewall:
sudo ufw allow 5555
Para verificar se a regra foi adicionada com sucesso, verifique o status do UFW:
sudo ufw status
Em distribuições baseadas em RHEL e openSUSE, use o seguinte comando para permitir SSH no firewall:
sudo firewall-cmd --permanent --add-service=ssh
Para permitir SSH por número de porta, use o seguinte comando:
sudo firewall-cmd --permanent --add-port={port}/tcp
Para um servidor SSH rodando na porta 4444, o comando seria:
sudo firewall-cmd --permanent --add-port=4444/tcp
Para verificar a adição bem-sucedida da regra no firewall, execute:
sudo firewall-cmd --list-all
5. Resolver conflitos de endereço IP
Há também uma chance de o erro SSH “conexão recusada” ocorrer devido ao conflito do IP do servidor SSH com o IP de outro sistema na rede. Isso acontece quando dois sistemas em uma rede afirmam ter o mesmo endereço IP, resultando em um conflito de IP.
Para confirmar se há um conflito de IP em sua rede, use a ferramenta arp-scan da seguinte maneira:
arp-scan [network-id]
Se houver um conflito de IP, você verá o endereço IP duplicado na saída. A captura de tela abaixo é um exemplo de um conflito de IP em uma rede:
Para evitar conflitos de IP, certifique-se de que nenhum dispositivo tenha endereços IP estáticos que se sobreponham aos endereços do pool DHCP.
Dica de bônus: execute o SSH no modo detalhado
Sempre que encontrar um erro SSH, tente executar o comando ssh no modo detalhado para rastrear o problema. Para executar o SSH no modo detalhado, use o comando ssh com a opção -vvv da seguinte forma:
ssh -vvv username@ip_address
No modo detalhado, você verá mensagens de depuração em cada etapa da conexão que o ajudarão a entender onde está o problema.
Solucionando problemas do erro SSH “Connection Refused” no Linux
Ao identificar as possíveis causas do erro de conectividade SSH e implementar as soluções sugeridas, você poderá solucionar problemas e resolver o erro SSH “conexão recusada”. Além dessas etapas, verifique se você está se conectando ao endereço IP correto e usando as credenciais de login corretas.
Para tornar sua conexão remota mais segura, você pode configurar a autenticação de dois fatores para SSH no Linux.
Deixe um comentário