9 min de leitura · Guia técnico
Connection refused no SSH ocorre quando o cliente não consegue estabelecer conexão com o servidor, geralmente devido ao serviço SSH inativo, porta bloqueada ou configuração incorreta. A solução envolve verificar o status do serviço, configurar firewall e validar conectividade de rede.
Pré-requisitos
- Acesso físico ao servidor ou console de gerenciamento
- Privilégios de root ou sudo no sistema
- Conhecimento básico de comandos Linux
- Cliente SSH instalado (OpenSSH, PuTTY ou similar)
Verificando o status do serviço SSH
O primeiro passo para solucionar connection refused no SSH é verificar se o daemon SSH está executando no servidor. O serviço pode estar parado por diversos motivos, desde falhas na inicialização até problemas de configuração.
Execute o comando para verificar o status do SSH:
systemctl status ssh
Em sistemas CentOS/RHEL, use:
systemctl status sshd
Output esperado quando o serviço está ativo:
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2024-01-15 10:30:45 UTC; 2h 15min ago
Se o serviço estiver inativo, inicie-o com:
sudo systemctl start ssh
sudo systemctl enable ssh
O comando enable garante que o SSH seja iniciado automaticamente durante o boot do sistema. Verifique novamente o status para confirmar que está rodando corretamente.
Configurando regras de firewall para SSH
Firewalls mal configurados são uma causa comum do erro connection refused SSH. O UFW (Uncomplicated Firewall) é amplamente usado em distribuições Ubuntu e pode estar bloqueando a porta 22 por padrão.
Verifique o status atual do firewall:
sudo ufw status
Se o UFW estiver ativo mas não mostrar regras para SSH, adicione a permissão:
sudo ufw allow ssh
sudo ufw allow 22/tcp
Para sistemas com iptables, verifique as regras existentes:
sudo iptables -L -n
Adicione regra para permitir SSH no iptables:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables-save > /etc/iptables/rules.v4
Em servidores com firewalld (CentOS/RHEL), use:
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
Testando conectividade de rede e porta SSH
Problemas de conectividade de rede podem simular um erro connection refused mesmo quando o SSH está funcionando corretamente. É essencial testar a conectividade básica antes de investigar configurações mais complexas.
Teste a conectividade básica com ping:
ping -c 4 IP_DO_SERVIDOR
Verifique se a porta 22 está aberta e respondendo:
telnet IP_DO_SERVIDOR 22
Output esperado quando a porta está acessível:
Trying 192.168.1.100...
Connected to 192.168.1.100.
Escape character is '^]'.
SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.4
Use nmap para verificar portas abertas:
nmap -p 22 IP_DO_SERVIDOR
Se o telnet falhar mas o ping funcionar, o problema está na configuração do SSH ou firewall. Se ambos falharem, verifique a conectividade de rede e configurações de roteamento.
Analisando logs do SSH para diagnóstico
Os logs do sistema fornecem informações valiosas sobre falhas de conexão SSH e podem revelar problemas específicos de configuração ou tentativas de acesso negadas.
Visualize os logs recentes do SSH:
sudo tail -f /var/log/auth.log
Em sistemas CentOS/RHEL:
sudo tail -f /var/log/secure
Para ver logs específicos do systemd:
sudo journalctl -u ssh -f
Procure por mensagens como:
- Connection closed by - indica tentativas de conexão rejeitadas
- Failed password - problemas de autenticação
- Permission denied - configurações de acesso restritivas
- Bad protocol version - incompatibilidade de versões SSH
Aumente o nível de debug temporariamente editando /etc/ssh/sshd_config:
LogLevel DEBUG
Reinicie o SSH após a alteração:
sudo systemctl restart ssh
Verificando configuração do arquivo sshd_config
Configurações incorretas no arquivo principal do SSH podem causar falhas de conexão mesmo quando o serviço está rodando. É importante verificar parâmetros críticos que afetam a conectividade.
Abra o arquivo de configuração:
sudo nano /etc/ssh/sshd_config
Verifique estas configurações essenciais:
Port 22
ListenAddress 0.0.0.0
PermitRootLogin yes
PasswordAuthentication yes
PubkeyAuthentication yes
Se a porta foi alterada, certifique-se de que o firewall permite a nova porta:
sudo ufw allow NOVA_PORTA/tcp
Teste a configuração antes de aplicar:
sudo sshd -t
Output esperado se a configuração estiver correta:
# Nenhuma saída indica configuração válida
Aplique as alterações reiniciando o serviço:
sudo systemctl restart ssh
Atenção: Sempre mantenha uma sessão SSH ativa ao modificar configurações para evitar perder acesso ao servidor.
Problemas comuns e como resolver
Sintoma: SSH funciona localmente mas falha remotamente
Causa: Configuração de ListenAddress restritiva ou firewall externo bloqueando conexões.
Solução: Altere ListenAddress para 0.0.0.0 no sshd_config e verifique regras de firewall do provedor de rede. Teste conexão de diferentes redes para isolar o problema.
Sintoma: Conexão recusada após mudança de porta SSH
Causa: Nova porta não foi liberada no firewall ou cliente está tentando conectar na porta padrão.
Solução: Execute sudo ufw allow NOVA_PORTA/tcp e conecte especificando a porta: ssh -p NOVA_PORTA usuario@servidor. Verifique se o serviço está escutando na nova porta com netstat -tlnp | grep :PORTA.
Sintoma: Erro persiste mesmo com SSH ativo e firewall configurado
Causa: Processo SSH corrompido, falta de recursos do sistema ou bloqueio por fail2ban.
Solução: Reinicie completamente o SSH com sudo systemctl stop ssh && sudo systemctl start ssh. Verifique recursos com free -h e df -h. Consulte logs do fail2ban em /var/log/fail2ban.log e desbloqueie IP se necessário.
Sintoma: Connection refused intermitente
Causa: Limite de conexões simultâneas atingido ou problemas de DNS reverso.
Solução: Aumente MaxStartups no sshd_config para MaxStartups 30:30:100. Desabilite verificação DNS reversa com UseDNS no. Monitore conexões ativas com ss -tnlp | grep :22.
Perguntas frequentes sobre connection refused SSH
O que significa o erro 'Connection refused' no SSH?
O erro 'Connection refused' indica que o cliente SSH não conseguiu estabelecer conexão com o servidor. Isso geralmente acontece quando o serviço SSH não está rodando, a porta 22 está bloqueada pelo firewall ou o endereço IP está incorreto.
Como verificar se o SSH está rodando no servidor?
Execute o comando 'systemctl status ssh' ou 'systemctl status sshd' para verificar o status do serviço SSH. Se estiver inativo, inicie com 'systemctl start ssh' e habilite para inicialização automática com 'systemctl enable ssh'.
Qual porta o SSH usa por padrão e como alterar?
O SSH usa a porta 22 por padrão. Para alterar, edite o arquivo /etc/ssh/sshd_config, modifique a linha 'Port 22' para o número desejado e reinicie o serviço SSH. Lembre-se de liberar a nova porta no firewall.
Como liberar a porta SSH no firewall UFW?
Execute 'ufw allow 22/tcp' para liberar a porta padrão do SSH. Se alterou a porta, use 'ufw allow NOVA_PORTA/tcp'. Para verificar as regras ativas, use 'ufw status' e confirme que a porta SSH está listada como permitida.
O erro persiste mesmo com SSH rodando, o que fazer?
Verifique se o endereço IP está correto, teste conectividade com 'ping' e 'telnet IP 22'. Confirme se não há bloqueio no provedor de rede, verifique logs do SSH em /var/log/auth.log e teste conexão de outra rede para isolar o problema.
Conclusão
- Sempre verifique o status do serviço SSH antes de investigar problemas de conectividade
- Configure adequadamente as regras de firewall para permitir tráfego na porta SSH
- Use logs do sistema para diagnosticar problemas específicos e identificar padrões de falha
Leia também
- Instalando painel de gerenciamento de hospedagem VirtualMin.
- Como usar a ferramenta oficial de acesso remoto do Windows no PC e celular
- Como acessar o painel de gerenciamento dos meus Serviços.
Precisa de ajuda com configuração de SSH?
Nossa equipe técnica especializada pode auxiliar na configuração e resolução de problemas de SSH em seu servidor. Oferecemos suporte completo para VPS Linux com monitoramento 24/7.