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, mormente se você for um gestor 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 provável pretexto 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 ingressão e você não poderá acessá-la remotamente.
Portanto, a primeira lanço 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 franco das ferramentas SSH para chegada 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 realizaçã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á porquê ativo (em realização). Caso contrário, você verá um tanto porquê inativo (morto).
Se o servidor SSH não estiver em realização, você pode iniciá-lo manualmente usando o seguinte comando:
sudo systemctl start sshd
Você também pode ativar o serviço para iniciar maquinalmente 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 mudar 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 dissemelhante.
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 sshd_config registo 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 realização, a próxima lanço é verificar seu firewall.
Para desenredar 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 manar depois 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
Porquê escolha, você também pode permitir o SSH pelo número da porta no firewall. Digamos que o servidor SSH esteja usando a porta 5555, logo 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 soma 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 “conexão recusada” do SSH 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 utensílio arp-scan da seguinte maneira:
arp-scan [network-id]
Se houver um conflito de IP, você verá o endereço IP geminado na saída. A tomada de tela inferior é 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 o -vvv opção da seguinte forma:
ssh -vvv username@ip_address
No modo detalhado, você verá mensagens de depuração em cada lanço 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.