Desenvolvedores
SSH e Git esgotam o tempo de espera no Mac
SSH e Git precisam de uma conexão TCP funcional com o servidor. Uma rede que bloqueia a porta 22, um caminho IPv6 com falha ou um proxy podem impedi-los.
Sintomas
git pushougit cloneespera e depois mostra “Operation timed out”.sshmostra “Connection timed out” em uma rede, mas funciona em outra.- Uma sessão SSH trava após alguns minutos ociosos.
- Remotos Git HTTPS funcionam, mas remotos SSH não.
Possíveis causas
- A porta 22 está bloqueada. Algumas redes corporativas, de hotéis e públicas bloqueiam SSH. O GitHub informa que firewalls às vezes recusam conexões SSH.
- Um caminho IPv6 com falha. O Mac tenta IPv6 primeiro. Se o IPv6 não funcionar, a conexão espera.
- Conexões ociosas são encerradas. Um roteador ou firewall pode interromper uma conexão que não envia dados por algum tempo.
- Um proxy é necessário. O Git via HTTPS em uma rede corporativa pode precisar de
http.proxyou de variáveis de proxy.
Como verificar
Conecte com saída detalhada. As últimas linhas mostram onde a conexão para.
ssh -vT git@github.comTeste apenas a porta TCP, com tempo limite de 5 segundos.
nc -vz -G 5 github.com 22Tente usar apenas IPv4. Se funcionar, o problema está no caminho IPv6.
ssh -4 -T git@github.comTeste o serviço SSH do GitHub na porta 443.
ssh -T -p 443 git@ssh.github.comMostre o ajuste de proxy do Git e suas variáveis de proxy.
git config --get http.proxy env | grep -i proxy
Como corrigir
Se a porta 22 estiver bloqueada, use SSH pela porta 443 para o GitHub. Adicione este bloco a
~/.ssh/config.Host github.com Hostname ssh.github.com Port 443 User gitSe o IPv6 falhar, use IPv4 para esse host. Adicione
AddressFamily inetao bloco dele em~/.ssh/config.Para manter sessões ociosas abertas, envie uma mensagem a cada 60 segundos. Adicione
ServerAliveInterval 60ao bloco do host.Para evitar esperas longas, adicione
ConnectTimeout 10ao bloco do host.Para repositórios remotos HTTPS atrás de um proxy, configure o proxy do Git.
git config --global http.proxy http://proxy.example.com:8080Como teste, use a URL HTTPS do repositório em vez da URL SSH.
Com o Kilobat
A verificação de conexão do Kilobat testa IPv4 e IPv6 separadamente para identificar problemas no caminho IPv6.
kilobat why github.comVeja as conexões abertas de um processo.
kilobat destinations --pid 12345
Perguntas
Por que ssh -4 funciona quando ssh sozinho não funciona?
O Mac tentou IPv6 primeiro, mas o caminho IPv6 não funcionou. Com -4, o ssh usa apenas IPv4.
O que faz ServerAliveInterval?
O ssh envia uma mensagem pela conexão após esse número de segundos sem dados. O padrão é 0, que não envia mensagens.
Fontes
- Documentação do GitHub: como usar SSH pela porta HTTPS
- ssh(1) e ssh_config(5), página de manual instalada com o macOS 27.2
- nc(1), página de manual instalada com o macOS 27.2
- git-config(1), http.proxy, página de manual instalada com o macOS 27.2 (Git 2.56)
Verificado em 29 de outubro de 2026.