認証エージェントへの接続を開くことができませんでした。

というエラーが発生してしまいます。

$ git push heroku master
Warning: Permanently added the RSA host key for IP address '50.19.85.132' to the list of known hosts.
!  Your key with fingerprint b7:fd:15:25:02:8e:5f:06:4f:1c:af:f3:f0:c3:c2:65 is not authorized to access bitstarter.

キーを追加しようとすると、以下のようなエラーが出ます。

$ ssh-add ~/.ssh/id_rsa.pub
Could not open a connection to your authentication agent.

MsysGit or Cygwin

Msysgit や Cygwin を使用している場合は、[SSH-Agent in msysgit and cygwin and bash][ant] に良いチュートリアルがあります。

1.ホームフォルダに.bashrcというファイルを追加します。

2.2. ファイルを開いて、以下をペーストする。

    #!/bin/bash
    eval `ssh-agent -s`
    ssh-add

3.これは、あなたの鍵が従来の ~/.ssh/id_rsa の場所にあることを前提としています。そうでない場合は、ssh-add コマンドの後にフルパスを入れてください。

4.4. 以下の内容のファイルを ~/.ssh/config に追加または作成します。

    ForwardAgent はい。

オリジナルのチュートリアルでは、ForwardAgentのパラメータがYesになっていますが、これはタイプミスです。すべて小文字にしないと、エラーになります。

5.5. Msysgitを再起動してください。パスフレーズの入力を一度だけ求められますが、それで終わりです(セッションを終了するか、ssh-agentが殺されるまで)。

Mac/OS X

ターミナルを開くたびに新しいssh-agentを起動したくない場合は、 [Keychain][1]をチェックしてみてください。私は今Macを使っているので、チュートリアル[ssh-agent with zsh & keychain on Mac OS X][2]を使って設定しましたが、Googleで検索すればWindows用の情報もたくさん出てくると思います。

更新。Macでのより良い解決策は、Mac OS Keychainにキーを追加することです。

ssh-add -K ~/.ssh/id_rsa

これだけです。

[蟻】: http://anterence.blogspot.com/2012/01/ssh-agent-in-msysgit.html [1]: https://github.com/funtoo/keychain [2]: http://www.randomsequence.com/articles/ssh-agent-with-zsh-keychain-on-mac-os-x/

解説 (10)

ssh-add と ssh (openssh の実装を使用していると仮定して) は、ssh エージェントとの対話方法を知るために、環境変数を必要とします。現在使用しているものとは別のコマンドプロンプトウィンドウでエージェントを起動した場合や、間違って起動した場合、 ssh-add も ssh も環境変数の設定を確認することはできません (なぜなら、環境変数は設定されたコマンドプロンプトに対して ローカル に設定されるからです)。

あなたが使っているsshのバージョンが書かれていませんが、もしcygwinのものを使っているのであれば、[SSH Agent on Cygwin][blog]のこのレシピを使うことができます。

# Add to your Bash config file
SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then
    eval `$SSHAGENT $SSHAGENTARGS`
    trap "kill $SSH_AGENT_PID" 0
fi

これにより、新しいコマンドプロンプトウィンドウを開くたびに自動的にエージェントが開始されます (1つのセッションで複数のコマンドプロンプトを開く場合には最適ではありませんが、少なくとも動作するはずです)。

解説 (4)

別の解決策を提案しましょう。 もしあなたがGit 1.8.2.2をインストールしたばかりで、SSHを有効にしたいのであれば、よく書かれたdirectionに従ってください。

ステップ5.6までは、ちょっとした問題が発生するかもしれません。 すでに SSH エージェントが動作している場合、bash を再起動すると次のようなエラーメッセージが表示されます。

Could not open a connection to your authentication agent

この場合、次のコマンドを使って、複数の ssh-agent プロセスが実行されているかどうかを確認してください。

ps aux | grep ssh

複数の ssh-agent サービスが表示されている場合は、これらのプロセスをすべて kill する必要があります。 次のように kill コマンドを使用します (PID はコンピュータ上で一意のものになります)。

kill 

kill 1074

すべてのssh-agentプロセスを削除したら、px aux | grep sshコマンドを再度実行して、それらがなくなったことを確認してから、Bashを再起動してください。

すると、以下のような画面が表示されるはずです。

Initializing new SSH agent...
succeeded
Enter passphrase for /c/Users/username/.ssh/id_rsa:

これで、ステップ5.7以降に進むことができます。

解説 (4)