開発者向け

MacでSSHやGitがタイムアウトする

SSHとGitには、サーバへの正常なTCP接続が必要です。ポート22をブロックするネットワーク、壊れたIPv6経路、プロキシがあると、接続が止まることがあります。

対象:現在のすべてのmacOS、macOSまたはHomebrewでインストールしたOpenSSHとGit。確認日:2026年10月29日

症状

  • git pushやgit cloneがしばらく待ったあと、「Operation timed out」と表示されます。
  • sshで、あるネットワークでは「Connection timed out」と表示され、別のネットワークではつながります。
  • SSHセッションが、何分か操作しないでいると固まります。
  • HTTPSのGitリモートは使えるのに、SSHのリモートは使えません。

考えられる原因

  • ポート22がブロックされている。会社、ホテル、公共のネットワークの中にはSSHをブロックするものがあります。GitHubも、ファイアウォールがSSH接続を拒否することがあると説明しています。
  • IPv6の経路が壊れている。MacはまずIPv6を試します。IPv6が機能しないと、接続が待たされます。
  • アイドル状態の接続が切られる。ルーターやファイアウォールは、しばらくデータを送らない接続を切断することがあります。
  • プロキシが必要。会社のネットワークでHTTPSのGitを使うには、http.proxyやプロキシ環境変数が必要な場合があります。

確認方法

  1. 詳細な出力付きで接続します。最後の数行で、接続がどこで止まっているかがわかります。

    ssh -vT git@github.com
  2. TCPポートだけを、タイムアウト5秒でテストします。

    nc -vz -G 5 github.com 22
  3. IPv4のみで試します。これでつながるなら、IPv6の経路が問題です。

    ssh -4 -T git@github.com
  4. ポート443でGitHubのSSHサービスをテストします。

    ssh -T -p 443 git@ssh.github.com
  5. Gitのプロキシ設定とプロキシ環境変数を表示します。

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

解決方法

  1. ポート22がブロックされている場合は、GitHubにポート443経由のSSHを使います。~/.ssh/configに次のブロックを追加します。

    Host github.com
        Hostname ssh.github.com
        Port 443
        User git
  2. IPv6が失敗する場合は、そのホストにIPv4を使います。~/.ssh/configのそのホストのブロックにAddressFamily inetを追加します。

  3. アイドル状態のセッションを維持するには、60秒ごとにメッセージを送ります。ホストのブロックにServerAliveInterval 60を追加します。

  4. 長く待たされないようにするには、ホストのブロックにConnectTimeout 10を追加します。

  5. プロキシの内側でHTTPSリモートを使う場合は、Gitのプロキシを設定します。

    git config --global http.proxy http://proxy.example.com:8080
  6. テストとして、リポジトリのSSH URLの代わりにHTTPS URLを使います。

Kilobatを使う場合

  1. Kilobatの接続チェックはIPv4とIPv6を別々にテストするので、IPv6の経路が壊れていればはっきりわかります。

    kilobat why github.com
  2. 1つのプロセスが開いている接続を確認します。

    kilobat destinations --pid 12345

よくある質問

ssh -4ではつながるのに、普通のsshではつながらないのはなぜですか?

MacがまずIPv6を試し、そのIPv6の経路が機能しなかったためです。-4を付けると、sshはIPv4だけを使います。

ServerAliveIntervalは何をするのですか?

データのない状態が指定の秒数続くと、sshが接続を通じてメッセージを送ります。デフォルトは0で、何も送りません。

出典

  • GitHub Docs:Using SSH over the HTTPS port
  • ssh(1)とssh_config(5)、macOS 27.2に付属のmanページ
  • nc(1)、macOS 27.2に付属のmanページ
  • git-config(1)、http.proxy、macOS 27.2に付属のmanページ(Git 2.56)

出典は2026年10月29日に確認しました。manページはmacOSに付属のものです。「ターミナル」でman <name>を実行すると開けます。