Troubleshooting de ufw e SSH - Verificando Regras Allow e Recuperacao
O que voce vai aprender
- Como isolar sistematicamente o
ufwcomo causa quando o SSH nao conecta - Recuperacao rapida quando "permitido mas nao conecta" ou "trancado fora de repente"
- Como evitar acidentes comuns (se trancar fora)
Resumo rapido
Quando o SSH nao conecta, siga esta ordem de cima para baixo:
- Confirme a porta SSH (nem sempre e 22)
- Verifique se o ufw e a causa:
sudo ufw status verbose - Verifique as regras allow:
sudo ufw status numbered - Adicione o allow necessario:
sudo ufw allow <PORTA>/tcp - Ainda falhando? Verifique causas fora do ufw (porta escutando, sshd, security groups)
Importante
Este artigo assume que voce pode acessar o servidor (via console ou rota alternativa). Se voce esta trancado fora via SSH, use o console da nuvem ou console web do VPS.
1. Primeiro, esclarecer a situacao
Conclusao: Confirme host, porta e IP de origem antes de qualquer mudanca de firewall para evitar se trancar.
Confirme estes 3 pontos:
- Host alvo: Dominio ou IP
- Porta alvo:
22ou personalizada como2222 - Origem: Casa, escritorio, bastion, etc. (necessario para restricoes de IP)
2. Verificar se o ufw e a causa (faca isso primeiro)
Conclusao: Execute
sudo ufw status verbose-- se inativo, o ufw nao esta causando a falha SSH.
Se o ufw esta inativo, ele nao e a causa (provavelmente outra coisa).
$ sudo ufw status verbose
Exemplo de saida (ativo):
Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed)
Exemplo de saida (inativo):
Status: inactive
inactive-> Nao e o ufw (verifique sshd, porta, firewall de nuvem, etc.)active-> Prossiga para verificar as regras
3. Confirmar o numero da porta SSH (22 nem sempre e correto)
Conclusao: Execute
sudo sshd -T | grep '^port'para confirmar a porta SSH real que o sshd esta usando.
A porta SSH e frequentemente alterada de 22 por seguranca.
$ sudo grep -nE '^\s*Port\s+' /etc/ssh/sshd_config
Verifique tambem (para configs incluidas):
$ sudo sshd -T | grep -i '^port '
sshd -T mostra a configuracao real em execucao, entao e confiavel.
4. Verificar regras do ufw (numeradas)
Conclusao:
sudo ufw status numbered-- verifique se a porta SSH tem ALLOW IN e se nao ha DENY sobrescrevendo.
Verifique o estado atual primeiro. Nao adivinhe.
$ sudo ufw status numbered
Pontos-chave:
- A porta SSH (ex: 22/tcp ou 2222/tcp) esta em ALLOW IN?
- Ha alguma regra DENY (problemas de prioridade)?
- O
Fromesta restrito (trancado se seu IP mudar)?
5. Recuperacao rapida: liberar a porta SSH
Conclusao:
sudo ufw allow <PORTA>/tcppara restaurar o SSH, depois verifique com status numbered.
Prioridade e conseguir conectar novamente. Restrinja com limitacao de IP depois.
5-1. Liberar porta padrao 22
$ sudo ufw allow 22/tcp
5-2. Liberar porta 2222 (exemplo)
$ sudo ufw allow 2222/tcp
Sempre verifique apos adicionar:
$ sudo ufw status numbered
6. Mais seguro: liberar com restricao de IP (recomendado)
Conclusao:
ufw allow from <IP> to any port <PORTA> proto tcpapos confirmar um IP estatico.
SSH restrito por IP e mais seguro que totalmente aberto.
$ sudo ufw allow from 203.0.113.10 to any port 2222 proto tcp
Aviso: Se seu IP residencial muda, voce sera trancado no dia seguinte. Considere "IP estatico", "VPN" ou "bastion host" para producao.
7. Top 5 causas de "permitido mas ainda falha"
Conclusao: Quando a regra allow existe mas o SSH falha, verifique sshd, porta e firewall de nuvem.
Causa 1: sshd nao esta executando / caiu
$ sudo systemctl status ssh $ sudo systemctl start ssh $ sudo journalctl -u ssh -n 200
Causa 2: servidor nao esta escutando naquela porta
$ sudo ss -lntp | grep ':22 ' $ sudo ss -lntp | grep ':2222 '
Causa 3: firewall de nuvem/hosting bloqueando
AWS Security Groups, GCP VPC Firewall, firewall do painel de administracao do VPS, etc. O ufw sozinho nao resolve.
$ nc -vz example.com 2222
timed out-> Caminho/firewall (incluindo lado da nuvem)refused-> Servidor nao escutandosucceeded-> Caminho de rede esta aberto
Causa 4: prioridade de regra ufw ou deny tendo efeito
$ sudo ufw status numbered $ sudo ufw delete 3
Causa 5: apenas IPv6 fechado / apenas IPv6 aberto
Verifique Anywhere (v6) no status para regras IPv6.
8. Exemplos de erros e interpretacao
Conclusao: "Timed out" e rota bloqueada; "refused" e nada escutando; publickey e autenticacao.
8-1. Connection timed out
Significado: Pacotes nao chegam (firewall/SG/roteamento/DNS/host fora)
8-2. Connection refused
Significado: Chegou mas nada escutando naquela porta
8-3. Permission denied (publickey)
Significado: Rede funciona, autenticacao falha (nao e ufw)
8-4. Host key verification failed
Significado: Incompatibilidade no known_hosts (nao e ufw)
$ ssh-keygen -R example.com
9. Coisas a evitar
Conclusao: Adicione SSH allow antes de
ufw enable, evite empilhar deny, confirme estabilidade do IP.
Nao faca: habilitar ufw sem regra de allow para SSH
Executar ufw enable sem SSH permitido tranca voce remotamente.
Ordem segura:
sudo ufw allow <porta-ssh>/tcpsudo ufw enablesudo ufw status numbered
Nao faca: encher de regras deny sem entender
Muitas regras deny criam problemas de prioridade e dificultam a recuperacao.
Nao faca: adicionar restricoes de IP sem verificar "seu IP"
Se o IP residencial muda frequentemente, restricao de IP sem VPN/bastion causa trancamentos.
Template para copiar e colar
# Liberar SSH(2222) totalmente aberto (recuperacao primeiro) sudo ufw allow 2222/tcp sudo ufw status numbered # Liberar SSH(2222) de IP especifico (producao) sudo ufw allow from 203.0.113.10 to any port 2222 proto tcp sudo ufw status numbered # Excluir regra deny por numero sudo ufw status numbered sudo ufw delete 3 sudo ufw status numbered # Verificar se sshd esta executando sudo systemctl status ssh sudo journalctl -u ssh -n 200 sudo ss -lntp | grep ':2222 ' # Verificacao de conectividade no lado do cliente nc -vz example.com 2222
Resumo
- Troubleshooting do ufw: "ufw esta ativo?" -> "Confirmar porta SSH" -> "Verificar regras" -> "Adicionar allow"
- Diferencas entre
timed out / refused / publickeyindicam a camada do problema - Nao execute cegamente
ufw enable/deny-- verifique o status numbered primeiro