SSH connection timed out significa que o cliente enviou o pedido para a porta TCP 22 e nada respondeu antes de o tempo de espera expirar. Os culpados habituais são uma firewall que descarta pacotes (ufw ou um security group da cloud), uma porta diferente da 22 ou um endereço IP que mudou. Consegue isolar o problema em minutos com nc -zv host 22.
SSH connection timed out vs connection refused: o que cada erro lhe diz
Connection refused aparece quando o pacote chega ao servidor e nada está à escuta nessa porta: o host responde com uma rejeição imediata. Connection timed out é silêncio: o pacote perde-se pelo caminho ou uma firewall descarta-o sem responder. Distinguir os dois corta o diagnóstico para metade.
- Connection refused: sshd parado, à escuta noutra porta, ou uma firewall configurada para rejeitar em vez de descartar.
- Connection timed out: uma firewall que descarta, um security group sem regra de entrada, o IP errado, uma máquina desligada ou uma rede que bloqueia a porta 22 de saída.
- No route to host: um problema de encaminhamento ou um host inacessível na rede local.
5 passos para diagnosticar um erro SSH connection timed out
Avance da verificação mais rápida até à que o obriga a entrar na consola do seu fornecedor:
- Confirme o endereço. Resolva o nome com
dig +short hoste compare-o com o IP apresentado no painel do seu fornecedor. - Teste a porta com nc.
nc -zv host 22indica se há algo à escuta, sem tocar na autenticação SSH. - Mude de rede. Se liga com dados móveis mas não no wifi, essa rede bloqueia a porta 22 de saída.
- Verifique a firewall do host. A partir da consola web do fornecedor,
sudo ufw status verbosemostra se 22/tcp está permitido. - Verifique o security group. A regra de entrada tem de aceitar TCP 22 a partir do seu IP atual, não do que tinha ontem.
nc -zv host 22: testar a porta SSH sem autenticar
O nc com -z abre uma ligação TCP à porta indicada e fecha-a sem enviar dados; -v mostra o resultado e -w limita a espera em segundos. É a forma mais limpa de separar um problema de rede de um problema de SSH.
nc -zv -w 5 server.example.com 22
nc -zv -w 5 203.0.113.10 2222
ssh -v -o ConnectTimeout=10 -p 22 [email protected]Se o nc mostrar succeeded ou open (consoante a variante instalada), a porta está acessível e a falha está no SSH: utilizador, chaves ou configuração. Se ficar pendurado até ao timeout, o bloqueio está na rede. Com ssh -v verá a linha Connecting to ... port 22; se Connection established nunca aparecer, não vale a pena verificar chaves ou permissões. As opções exatas estão na página de manual do nc.
O OpenSSH escuta por omissão na porta TCP 22. Se alguém alterou Port em sshd_config, ligar à 22 devolve um timeout ou uma recusa, consoante o que a firewall faz com essa porta; use -p ou a diretiva Port em ~/.ssh/config.
ufw status e security groups: as duas firewalls que bloqueiam o SSH
Um servidor na cloud costuma estar atrás de dois filtros: a firewall do sistema operativo, como o ufw no Ubuntu, e o security group ou firewall de rede do fornecedor. Basta um deles descartar o pacote para o SSH dar timeout. Verifique o primeiro a partir da consola web do fornecedor, não a partir de outra sessão SSH que dependa da mesma regra:
sudo ufw status verbose
sudo ufw allow 22/tcp
sudo ufw allow 60000:61000/udp
sudo ss -tlnp | grep sshdufw status verbose mostra a política de entrada por omissão e as regras ativas; se a entrada estiver em deny e não houver regra para 22/tcp, está aí o seu timeout. ss -tlnp confirma em que endereço e porta o sshd está à escuta. A regra UDP só é necessária para o Mosh, que usa por omissão as portas 60000-61000.
No security group, reveja as regras de entrada: tem de existir uma para TCP 22 cuja origem inclua o seu IP público atual. Restringir a origem a um único endereço é boa prática, e é também o motivo mais comum de timeout quando se liga a partir de outra rede.
IP alterado: quando o servidor SSH ou o seu telemóvel tem um endereço novo
Um IP alterado produz um erro connection timed out idêntico ao de um bloqueio de firewall, e a alteração pode acontecer em qualquer uma das pontas.
- Lado do servidor: uma instância parada e iniciada sem IP estático pode voltar com um endereço diferente. Verifique o registo DNS com
dig +short server.example.come oHostNameno seu~/.ssh/config. - Lado do cliente: se o security group só permite o IP do escritório, com dados móveis ou no wifi do hotel chega a partir de outro endereço e o pacote é descartado.
Para máquinas sem IP público nem portas expostas, uma rede mesh privada evita que ande atrás de endereços: o servidor é acedido através do seu IP da mesh sem abrir a porta 22 à internet. Duas opções são a rede mesh privada Prialo e o Tailscale.
SSH connection timed out em iOS e Android: o que muda em relação ao computador
Num telemóvel a rede muda constantemente, por isso IPs alterados e redes que bloqueiam a porta 22 aparecem com muito mais frequência do que num portátil ligado por cabo.
| O que verifica | Computador (Linux/macOS) | iOS/Android |
|---|---|---|
| Testar a porta com nc | nc -zv no terminal local | nc -zv a partir de outro servidor onde tem sessão iniciada |
| Frequência com que o IP muda | Raramente: rede fixa de casa ou do escritório | Frequentemente: passar do wifi para dados muda o IP público |
| Porta 22 de saída bloqueada | Raro nas suas próprias redes | Comum em wifi de convidados, hotéis e aeroportos |
| Sessão quando a rede muda | O SSH cai; o tmux preserva o seu trabalho | O Mosh mantém-na aberta; o tmux preserva o seu trabalho |
| Teclas Ctrl, Esc e setas | Teclado físico | Depende da app; o termi1 inclui-as |
No termi1, o teclado integrado tem Esc, Ctrl, Tab e setas, por isso terminar um nc pendurado com Ctrl+C ou recuperar o comando anterior não exige malabarismos. O Mosh mantém a sessão viva quando passa do wifi para dados, mas arranca o mosh-server através de uma ligação SSH inicial: se a porta 22 der timeout, o Mosh também não consegue entrar. A IA pode escrever um comando como sudo ufw status verbose no prompt a partir de uma frase ditada, sem carregar em Enter; em ligações marcadas como produção, o Production Guard trava alterações como ufw allow antes de chegarem ao prompt. Pode experimentá-lo com o terminal termi1 para iOS.
Perguntas frequentes
O que significa connection timed out no SSH?
Connection timed out no SSH significa que o cliente tentou abrir uma ligação TCP ao servidor e não obteve resposta antes de o tempo de espera expirar. As causas habituais são uma firewall que descarta pacotes, um security group sem regra para a porta 22, o endereço IP errado ou um servidor desligado.
Como verifico se a porta 22 está aberta num servidor?
A porta 22 de um servidor pode ser verificada com nc -zv -w 5 host 22, que tenta a ligação TCP sem autenticar. Se indicar succeeded ou open, a porta está acessível e o problema está no SSH; se esperar até ao limite, a rede ou uma firewall está a descartar o tráfego.
Porque é que o SSH funciona com dados móveis mas dá timeout no wifi?
O SSH funciona com dados móveis mas dá timeout no wifi quando essa rede wifi bloqueia a porta 22 de saída, algo comum em redes de convidados e empresariais. O inverso também acontece quando o security group só permite o IP público do wifi e não o endereço atribuído pela sua operadora móvel.
O Mosh precisa de portas abertas além da 22?
O Mosh precisa da porta TCP 22 para a ligação SSH inicial que arranca o mosh-server, e ainda das portas UDP 60000-61000 por omissão. Se a firewall ou o security group só permitirem a porta 22, a ligação SSH é bem-sucedida, mas a sessão Mosh nunca consegue estabelecer-se.