14 min de leitura · Guia técnico
Solucionar problemas de acesso SSH é essencial para administradores de servidores VPS Linux. Quando você não consegue acessar seu servidor via SSH, isso pode ser causado por configurações incorretas do serviço SSH, problemas de firewall, chaves SSH mal configuradas ou questões de rede. Este guia apresenta métodos de diagnóstico e soluções para os problemas mais comuns de acesso SSH em ambientes Linux.
Pré-requisitos
- Acesso ao painel de controle do seu provedor VPS
- Acesso ao console de emergência/KVM virtual do seu VPS
- Conhecimentos básicos de linha de comando Linux
- Cliente SSH instalado em sua máquina local (OpenSSH, PuTTY, etc.)
- Credenciais de acesso ao servidor (nome de usuário, senha ou chave SSH)
Entendendo os problemas comuns de conexão SSH
Antes de iniciar o processo de solução de problemas, é importante entender os tipos mais comuns de falhas de conexão SSH. Identificar corretamente o erro ajuda a direcionar seus esforços para a solução adequada.
Os problemas de SSH geralmente se manifestam através de mensagens de erro específicas:
- Connection refused - O servidor não está aceitando conexões na porta SSH
- Connection timed out - Não foi possível estabelecer conexão com o servidor
- Permission denied - Falha na autenticação (senha incorreta ou problemas com chaves SSH)
- Host key verification failed - A chave do host mudou ou não é reconhecida
- Network unreachable - Problemas de rede impedindo a conexão
Vamos abordar cada um desses problemas com soluções específicas.
Verificando o status do serviço SSH
O primeiro passo para diagnosticar problemas de acesso SSH é verificar se o serviço está em execução no servidor. Para isso, você precisará acessar o servidor através do console de emergência fornecido pelo seu provedor VPS.
Uma vez no console, verifique o status do serviço SSH com um dos seguintes comandos, dependendo da sua distribuição Linux:
Para sistemas que usam systemd (Ubuntu 16.04+, CentOS 7+, Debian 8+):
systemctl status sshd
ou
systemctl status ssh
Para sistemas mais antigos que usam SysVinit:
service sshd status
O output esperado para um serviço funcionando corretamente será semelhante a:
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-05-15 10:25:30 UTC; 2h 15min ago
Process: 1234 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Main PID: 1235 (sshd)
Tasks: 1 (limit: 4915)
CGroup: /system.slice/ssh.service
└─1235 /usr/sbin/sshd -D
Se o serviço não estiver em execução, inicie-o com:
systemctl start sshd
Se o serviço falhar ao iniciar, verifique os logs para identificar o problema:
journalctl -u sshd -n 50
Diagnosticando problemas de configuração SSH
Configurações incorretas no arquivo sshd_config são uma causa comum de problemas de acesso SSH. Acesse o arquivo de configuração e verifique se há erros:
nano /etc/ssh/sshd_config
Verifique as seguintes configurações críticas:
- Port - Confirme que a porta SSH está configurada corretamente (padrão: 22)
- ListenAddress - Verifique se o servidor está configurado para escutar no endereço IP correto
- PermitRootLogin - Determina se o login como root é permitido
- PasswordAuthentication - Controla se a autenticação por senha é permitida
- PubkeyAuthentication - Controla se a autenticação por chave pública é permitida
- AllowUsers/DenyUsers - Restrições de acesso baseadas em usuários
Para verificar se há erros de sintaxe na configuração SSH, execute:
sshd -t
Se não houver output, a configuração está sintaticamente correta. Caso contrário, o comando mostrará os erros encontrados.
Após fazer alterações no arquivo de configuração, reinicie o serviço SSH:
systemctl restart sshd
Atenção: Tenha cuidado ao modificar o arquivo sshd_config. Mantenha uma sessão de console aberta enquanto testa as alterações para evitar perder o acesso ao servidor.
Solucionando problemas de firewall
Regras de firewall mal configuradas podem bloquear o acesso SSH ao seu VPS. Verifique as regras de firewall ativas no sistema.
Para UFW (Uncomplicated Firewall), comum em sistemas Ubuntu:
ufw status
Se o UFW estiver ativo, verifique se a porta SSH está permitida:
ufw allow ssh
Ou, se você estiver usando uma porta não padrão:
ufw allow 2222/tcp
Para iptables, verifique as regras atuais:
iptables -L -n
Para adicionar uma regra permitindo SSH no iptables:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables-save > /etc/iptables/rules.v4
Para firewalld, usado em sistemas CentOS/RHEL:
firewall-cmd --list-all
Para permitir SSH no firewalld:
firewall-cmd --permanent --add-service=ssh
firewall-cmd --reload
Verifique também se há regras de firewall no nível do provedor VPS. Muitos provedores oferecem firewalls adicionais através do painel de controle que podem estar bloqueando o acesso.
Resolvendo problemas de autenticação SSH
Problemas de autenticação são comuns e geralmente se manifestam como erros "Permission denied". Vamos abordar as soluções para diferentes métodos de autenticação.
Autenticação por senha
Se você estiver tendo problemas com autenticação por senha, verifique:
- Se a autenticação por senha está habilitada no servidor:
grep PasswordAuthentication /etc/ssh/sshd_config
Deve mostrar:
PasswordAuthentication yes
Se estiver definido como "no", altere para "yes" e reinicie o serviço SSH:
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
systemctl restart sshd
- Verifique se a senha do usuário está correta. Se necessário, redefina a senha:
passwd username
Autenticação por chave pública
Para problemas com autenticação por chave pública:
- Verifique se a autenticação por chave está habilitada:
grep PubkeyAuthentication /etc/ssh/sshd_config
Deve mostrar:
PubkeyAuthentication yes
- Verifique as permissões dos arquivos e diretórios SSH:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
- Verifique se a chave pública está corretamente adicionada ao arquivo authorized_keys:
cat ~/.ssh/authorized_keys
- Se necessário, adicione sua chave pública ao servidor:
mkdir -p ~/.ssh
echo "sua_chave_publica_aqui" >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Para gerar um novo par de chaves na sua máquina local:
ssh-keygen -t rsa -b 4096
E para copiar a chave para o servidor (quando você ainda tem acesso por senha):
ssh-copy-id usuario@seu_servidor
Solucionando problemas de rede e conectividade
Problemas de rede podem impedir o acesso SSH ao seu VPS. Aqui estão algumas etapas para diagnosticar e resolver esses problemas:
- Verifique se o servidor está acessível através de ping:
ping seu_servidor
- Verifique se a porta SSH está aberta e acessível:
telnet seu_servidor 22
Ou usando netcat:
nc -zv seu_servidor 22
- Verifique se o serviço SSH está escutando na porta correta:
ss -tulpn | grep ssh
Ou:
netstat -tulpn | grep ssh
O output esperado deve mostrar algo como:
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1235/sshd
- Se você alterou a porta SSH padrão, certifique-se de especificá-la ao conectar:
ssh -p porta_personalizada usuario@seu_servidor
Se o servidor estiver atrás de um NAT ou proxy, verifique se o encaminhamento de porta está configurado corretamente.
Problemas comuns e como resolver
Sintoma: Connection refused
Causa: Este erro geralmente indica que o servidor SSH não está em execução ou que a porta está bloqueada por um firewall.
Solução: Verifique se o serviço SSH está ativo com 'systemctl status sshd'. Se não estiver, inicie-o com 'systemctl start sshd'. Verifique também as regras de firewall e certifique-se de que a porta SSH (geralmente 22) está aberta.
Sintoma: Connection timed out
Causa: Este erro geralmente indica problemas de rede, como bloqueio de porta no nível do provedor ou endereço IP incorreto.
Solução: Verifique se o endereço IP do servidor está correto. Teste a conectividade com 'ping' e 'telnet'. Verifique se há firewalls no nível do provedor que possam estar bloqueando a conexão.
Sintoma: Permission denied (publickey,password)
Causa: Falha na autenticação devido a credenciais incorretas ou configurações de autenticação restritivas.
Solução: Verifique se está usando o nome de usuário correto. Se estiver usando autenticação por senha, verifique se 'PasswordAuthentication' está definido como 'yes' no arquivo sshd_config. Se estiver usando chaves SSH, verifique se a chave privada corresponde à chave pública no servidor e se as permissões dos arquivos estão corretas.
Sintoma: Host key verification failed
Causa: A chave do host mudou ou não é reconhecida pelo cliente SSH.
Solução: Se você confia no servidor e sabe que a chave mudou legitimamente (por exemplo, após uma reinstalação do sistema), remova a entrada antiga do arquivo known_hosts: 'ssh-keygen -R nome_do_servidor'.
Sintoma: SSH muito lento para conectar
Causa: Problemas de DNS reverso, configurações de GSS-API ou problemas de rede.
Solução: Desabilite o GSS-API no cliente SSH adicionando 'GSSAPIAuthentication no' ao arquivo ~/.ssh/config. Verifique também se há problemas de DNS reverso com o seu provedor.
Recuperando acesso SSH sem reiniciar o VPS
Se você perdeu completamente o acesso SSH ao seu VPS, mas ainda tem acesso ao console de emergência ou KVM virtual fornecido pelo seu provedor, você pode recuperar o acesso sem reiniciar o sistema:
- Acesse o console de emergência através do painel de controle do seu provedor VPS
- Faça login usando suas credenciais de root ou sudo
- Verifique e corrija as configurações SSH:
nano /etc/ssh/sshd_config
Certifique-se de que as configurações básicas estão corretas:
Port 22
PermitRootLogin yes # Temporariamente para recuperação
PasswordAuthentication yes
PubkeyAuthentication yes
- Reinicie o serviço SSH:
systemctl restart sshd
- Verifique se há problemas de firewall e corrija-os conforme necessário
- Após recuperar o acesso, reforce a segurança novamente desabilitando o login root se apropriado
Se o problema persistir, você pode precisar verificar os logs do sistema para obter mais informações:
tail -n 100 /var/log/auth.log # Debian/Ubuntu
tail -n 100 /var/log/secure # CentOS/RHEL
Perguntas frequentes sobre problemas de acesso SSH
Por que minha conexão SSH é recusada com 'Connection refused'?
O erro 'Connection refused' geralmente indica que o servidor SSH não está rodando, a porta está bloqueada por firewall ou o endereço IP está incorreto. Verifique se o serviço SSH está ativo com 'systemctl status sshd' e se não há regras de firewall bloqueando a porta 22.
Como resolver o erro 'Permission denied (publickey)' no SSH?
Este erro ocorre quando a autenticação por chave pública falha. Verifique se sua chave privada corresponde à chave pública no servidor, se os arquivos têm permissões corretas (600 para a chave privada e 700 para .ssh/) e se o PasswordAuthentication está habilitado no sshd_config caso queira usar senha.
O que fazer quando o SSH está muito lento para conectar?
Conexões SSH lentas geralmente são causadas por problemas de DNS reverso, configurações de GSS-API ou problemas de rede. Desabilite o GSS-API no cliente SSH com 'GSSAPIAuthentication no' no arquivo ~/.ssh/config e verifique a latência de rede com ferramentas como ping e traceroute.
Como resolver o erro 'Host key verification failed' no SSH?
Este erro ocorre quando a chave do host mudou ou não é reconhecida. Remova a entrada correspondente do arquivo ~/.ssh/known_hosts no seu computador local ou, se confiar no servidor, execute 'ssh-keygen -R nome_do_servidor' para remover a chave antiga e permitir que uma nova seja aceita.
É possível recuperar acesso SSH sem reiniciar o VPS?
Sim, se você tiver acesso ao console de emergência do VPS (geralmente fornecido pelo painel de controle do provedor). Através dele, você pode editar arquivos de configuração SSH, reiniciar o serviço ou corrigir problemas de firewall sem reiniciar o sistema completo.
Conclusão
Solucionar problemas de acesso SSH em um VPS Linux pode ser desafiador, mas seguindo uma abordagem sistemática, você pode identificar e resolver a maioria dos problemas. Lembre-se de:
- Verificar sempre o status do serviço SSH e os logs do sistema para identificar a causa raiz
- Manter backups das configurações SSH antes de fazer alterações
- Utilizar o console de emergência do provedor VPS quando perder completamente o acesso SSH
- Implementar boas práticas de segurança SSH após resolver os problemas de acesso
- Documentar as soluções encontradas para referência futura
Com as técnicas apresentadas neste guia, você estará bem equipado para diagnosticar e resolver a maioria dos problemas de acesso SSH em seu VPS Linux, minimizando o tempo de inatividade e mantendo seus serviços online.
Precisa de ajuda com seu servidor VPS Linux?
A AviraHost oferece suporte especializado para configuração e solução de problemas em servidores VPS Linux. Nossa equipe técnica está disponível 24/7 para ajudar com qualquer problema de acesso SSH ou configuração de servidor.
Conheça nossos planos de VPS Linux com suporte especializado