問題の概要
突然のSSHエラーほど、ワークフローを停滞させるものはありません。コードをプッシュしたり、サーバーにログインしたりするために秘密鍵をエージェントに追加しようとした際、成功メッセージの代わりに次のようなエラーが表示されることがあります。
error: communication with agent failed
このエラーは通常、PowerShell、コマンドプロンプト、またはVS Code内の統合ターミナルで発生します。これは、キーがキャッシュされていないことを意味します。その結果、リモートのGitリポジトリとやり取りするたびに、パスフレーズを何度も入力しなければならなくなります。
原因
ssh-addコマンドは単なる伝達役に過ぎません。このコマンドは、OpenSSH Authentication Agent (ssh-agent) と呼ばれるバックグラウンドプロセスと通信する必要があります。このサービスは、復号化されたキーをRAM内に保持するため、パスワードを何度も再入力する必要がなくなります。
Windowsでは、このエージェントはシステムサービスとして動作します。WindowsにはデフォルトでOpenSSHクライアントが含まれていますが、ssh-agentサービスは初期状態で「無効」に設定されていることがよくあります。コマンドを実行すると、サービスへの「名前付きパイプ」接続を試みますが、サービスが実行されていない場合、接続が切断され、このエラーが発生します。
解決策 1:PowerShellを使用する迅速な方法(推奨)
PowerShellを使用するのが、この問題を解決する最も直接的な方法です。サービスのスタートアップの種類を「自動」に変更し、プロセスを起動します。これには10秒ほどしかかかりません。
1. PowerShellを管理者として実行する
Winキーを押し、「PowerShell」と入力して、検索結果を右クリックし、**[管理者として実行]**を選択します。システムサービスを変更するには、これらの昇格された権限が必要です。
2. サービスの状態を確認する
次のコマンドを実行して、サービスが実際に原因であるかどうかを確認します。
Get-Service ssh-agent
多くの場合、Status(状態)が「Stopped」で、StartType(スタートアップの種類)が「Disabled」と表示されます。
3. 有効化と開始
以下の2つのコマンドを実行して、サービスを稼働させます。
# Windowsの起動時にサービスが自動的に開始されるように設定します
Set-Service -Name ssh-agent -StartupType Automatic
# サービスをすぐに開始します
Start-Service ssh-agent
これで、もう一度キーの追加を試してみてください。すぐに動作するはずです。
ssh-add ~/.ssh/id_rsa
解決策 2:Windows サービス マネージャー (GUI) を使用する方法
コマンドを入力するよりもメニューをクリックする方を好む場合は、標準のWindows管理ツールを使用できます。
Win + Rを押し、services.mscと入力してEnterキーを押します。- リストの中からOpenSSH Authentication Agentを探します。
- 右クリックして**[プロパティ]**を選択します。
- **[スタートアップの種類]を[自動]**に設定します。
- **[開始]**をクリックします。1〜2秒で進行状況バーが完了します。
- **[適用]**をクリックして、ウィンドウを閉じます。
Git Bashユーザー向けの特記事項
Git Bash (MinGW64) は、Windowsのシステムサービスを無視することがあります。サービスを開始してもGit Bashでエラーが出る場合は、その特定のウィンドウに対してエージェントのローカルインスタンスを開始する必要があるかもしれません。
Git Bash内で次のコマンドを実行します:
eval $(ssh-agent -s)
これにより、エージェントが手動で初期化され、現在のセッションに対してSSH_AUTH_SOCK環境変数が設定されます。
修正の確認
すべてが正常に動作しているか確認するために、エージェントに現在ロードされているキーを一覧表示させます。
ssh-add -l
エージェントがアクティブだが空の場合、*「The agent has no identities.」*と表示されます。これは、通信チャネルが開いていることを示す良い兆候です。数字と文字の長い文字列(フィンガープリント)が表示されれば、キーは正常にロードされており、使用可能な状態です。
WindowsでのSSHに関するプロのヒント
- 自動設定を維持する: サービスを「手動」に設定しないでください。そうすると、再起動後にサービスが開始されず、またこのガイドを読み直すことになります。
- 競合に注意: PuTTYやPageantを使用している場合、どのエージェントがキーを処理するかで競合が発生することがあります。問題が解決しない場合は、Pageantを終了して、ネイティブのWindows OpenSSHが動作するか確認してください。
- ファイル権限: Windowsはセキュリティ設定に厳格です。エージェントが実行されていてもキーを受け付けない場合は、
id_rsaファイルを右クリックし、*[プロパティ] > [セキュリティ] > [詳細設定]*から、自分のユーザーアカウントのみがアクセス権を持っていることを確認してください。

