---
title: "MacでSSHやgit pushがタイムアウトする：原因と対処法 · Kilobatガイド"
url: "https://kilobat.app/ja/guides/ssh-git-timeouts.html"
description: "ハングしたりタイムアウトしたりするSSHとGitの接続を直します。ポート22をテストし、GitHubではポート443経由のSSHを使い、キープアライブを設定して、IPv6とプロキシを確認します。"
---

開発者向け

# 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](https://docs.github.com/en/authentication/troubleshooting-ssh/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>`を実行すると開けます。

## 関連ガイド

- [MacでのIPv6の問題](https://kilobat.app/ja/guides/ipv6-problems-mac.html): ほとんどのネットワークは、MacにIPv4とIPv6の両方のアドレスを割り当てます。
- [Macで会社のプロキシ証明書がターミナルのツールを妨げる](https://kilobat.app/ja/guides/corporate-proxy-certificates.html): 会社のネットワークの中には、HTTPSの通信を検査するものがあります。
- [MacでHomebrewやnpmのダウンロードが失敗する](https://kilobat.app/ja/guides/homebrew-npm-download-fails.html): Homebrewはcurlとgitでダウンロードします。
- [1つのサイトやAPIに接続できない原因を見つける](https://kilobat.app/ja/guides/recipes/why-cant-it-connect.html): インターネットは使えるのに1つのアドレスだけ失敗するとき、Kilobatは各レイヤーを順番に確認します。
- [Macで「ssh: connect to host port 22: Operation timed out」と表示される](https://kilobat.app/ja/guides/ssh-port-22-operation-timed-out.html): sshがポート22に接続要求を送りましたが、応答がありませんでした。
