Développeurs
SSH et Git expirent sur un Mac
SSH et Git ont besoin d’une connexion TCP fonctionnelle vers le serveur. Un réseau qui bloque le port 22, un chemin IPv6 défaillant ou un proxy peut les en empêcher.
Symptômes
git pushougit clonereste en attente, puis affiche « Operation timed out ».sshaffiche « Connection timed out » sur un réseau, mais fonctionne sur un autre.- Une session SSH se fige après quelques minutes d’inactivité.
- Les dépôts distants Git en HTTPS fonctionnent, mais pas ceux en SSH.
Causes probables
- Le port 22 est bloqué. Certains réseaux d’entreprise, d’hôtel et publics bloquent SSH. GitHub indique que les coupe-feu refusent parfois les connexions SSH.
- Un chemin IPv6 défaillant. Le Mac essaie d’abord IPv6. Si IPv6 ne fonctionne pas, la connexion reste en attente.
- Les connexions inactives se ferment. Un routeur ou un coupe-feu peut couper une connexion qui n’envoie aucune donnée pendant un certain temps.
- Un proxy est nécessaire. Git en HTTPS sur un réseau d’entreprise peut nécessiter
http.proxyou des variables de proxy.
Comment vérifier
Connectez-vous avec une sortie détaillée. Les dernières lignes montrent où la connexion s’arrête.
ssh -vT git@github.comTestez le port TCP seul, avec un délai d’expiration de 5 secondes.
nc -vz -G 5 github.com 22Essayez en IPv4 uniquement. Si cela fonctionne, le problème vient du chemin IPv6.
ssh -4 -T git@github.comTestez le service SSH de GitHub sur le port 443.
ssh -T -p 443 git@ssh.github.comAffichez le réglage de proxy de Git et vos variables de proxy.
git config --get http.proxy env | grep -i proxy
Comment corriger
Si le port 22 est bloqué, utilisez SSH sur le port 443 pour GitHub. Ajoutez ce bloc à
~/.ssh/config.Host github.com Hostname ssh.github.com Port 443 User gitSi IPv6 échoue, utilisez IPv4 pour cet hôte. Ajoutez
AddressFamily inetà son bloc dans~/.ssh/config.Pour garder ouvertes les sessions inactives, envoyez un message toutes les 60 secondes. Ajoutez
ServerAliveInterval 60au bloc de l’hôte.Pour éviter les longues attentes, ajoutez
ConnectTimeout 10au bloc de l’hôte.Pour les dépôts distants HTTPS derrière un proxy, configurez le proxy de Git.
git config --global http.proxy http://proxy.example.com:8080Pour tester, utilisez l’URL HTTPS du dépôt au lieu de l’URL SSH.
Avec Kilobat
La vérification de la connexion de Kilobat teste IPv4 et IPv6 séparément : un chemin IPv6 défaillant obtient ainsi une réponse claire.
kilobat why github.comAffichez les connexions ouvertes d’un processus.
kilobat destinations --pid 12345
Questions
Pourquoi ssh -4 fonctionne-t-il alors que ssh seul échoue ?
Le Mac a d’abord essayé IPv6, et le chemin IPv6 ne fonctionnait pas. Avec -4, ssh utilise uniquement IPv4.
À quoi sert ServerAliveInterval ?
ssh envoie un message dans la connexion après ce nombre de secondes sans données. La valeur par défaut est 0, qui n’en envoie aucun.
Sources
- GitHub Docs : Utiliser SSH sur le port HTTPS
- ssh(1) et ssh_config(5), pages man installées avec macOS 27.2
- nc(1), page man installée avec macOS 27.2
- git-config(1), http.proxy, page man installée avec macOS 27.2 (Git 2.56)
Sources vérifiées le 29 octobre 2026. Les pages man sont celles installées avec macOS ; ouvrez-en une avec man <name> dans Terminal.