Entwickler

SSH und Git laufen auf dem Mac in Timeouts

SSH und Git brauchen eine funktionierende TCP-Verbindung zum Server. Ein Netzwerk, das Port 22 blockiert, ein defekter IPv6-Pfad oder ein Proxy kann sie stoppen.

Gilt für: alle aktuellen macOS-Versionen mit dem OpenSSH und Git, die macOS oder Homebrew installiert.Geprüft: 29. Oktober 2026

Symptome

  • git push oder git clone wartet und zeigt dann „Operation timed out“.
  • ssh zeigt in einem Netzwerk „Connection timed out“, funktioniert aber in einem anderen.
  • Eine SSH-Sitzung friert nach einigen Minuten ohne Aktivität ein.
  • Git-Remotes über HTTPS funktionieren, SSH-Remotes aber nicht.

Mögliche Ursachen

  • Port 22 ist blockiert. Manche Firmen-, Hotel- und öffentlichen Netzwerke blockieren SSH. Laut GitHub lehnen Firewalls SSH-Verbindungen manchmal ab.
  • Ein defekter IPv6-Pfad. Der Mac versucht es zuerst über IPv6. Funktioniert IPv6 nicht, wartet die Verbindung.
  • Inaktive Verbindungen werden geschlossen. Ein Router oder eine Firewall kann eine Verbindung trennen, über die eine Weile keine Daten fließen.
  • Ein Proxy ist nötig. Git über HTTPS kann in einem Firmennetzwerk http.proxy oder Proxy-Variablen brauchen.

So prüfst du es

  1. Verbinde dich mit ausführlicher Ausgabe. Die letzten Zeilen zeigen, wo die Verbindung stoppt.

    ssh -vT git@github.com
  2. Teste nur den TCP-Port, mit einem Timeout von 5 Sekunden.

    nc -vz -G 5 github.com 22
  3. Probier es nur mit IPv4. Klappt das, liegt das Problem beim IPv6-Pfad.

    ssh -4 -T git@github.com
  4. Teste den SSH-Dienst von GitHub auf Port 443.

    ssh -T -p 443 git@ssh.github.com
  5. Zeige die Proxy-Einstellung von Git und deine Proxy-Variablen an.

    git config --get http.proxy
    env | grep -i proxy

So behebst du es

  1. Ist Port 22 blockiert, nutze für GitHub SSH über Port 443. Füge diesen Block zu ~/.ssh/config hinzu.

    Host github.com
        Hostname ssh.github.com
        Port 443
        User git
  2. Scheitert IPv6, nutze für diesen Host IPv4. Füge AddressFamily inet zu seinem Block in ~/.ssh/config hinzu.

  3. Damit inaktive Sitzungen offen bleiben, sende alle 60 Sekunden eine Nachricht. Füge ServerAliveInterval 60 zum Host-Block hinzu.

  4. Gegen lange Wartezeiten füge ConnectTimeout 10 zum Host-Block hinzu.

  5. Für HTTPS-Remotes hinter einem Proxy setze den Proxy von Git.

    git config --global http.proxy http://proxy.example.com:8080
  6. Nutze testweise die HTTPS-URL des Repositorys statt der SSH-URL.

Mit Kilobat

  1. Die Verbindungsprüfung von Kilobat testet IPv4 und IPv6 getrennt, sodass ein defekter IPv6-Pfad eine klare Antwort bekommt.

    kilobat why github.com
  2. Die offenen Verbindungen eines Prozesses anzeigen.

    kilobat destinations --pid 12345

Fragen

Warum funktioniert ssh -4, normales ssh aber nicht?

Der Mac hat es zuerst über IPv6 versucht, und der IPv6-Pfad hat nicht funktioniert. Mit -4 nutzt ssh nur IPv4.

Was bewirkt ServerAliveInterval?

ssh sendet eine Nachricht durch die Verbindung, wenn so viele Sekunden lang keine Daten geflossen sind. Der Standardwert ist 0, dann wird nichts gesendet.

Quellen

Quellen geprüft am 29. Oktober 2026. Die Manpages sind die mit macOS installierten; öffne eine mit man <name> im Terminal.