Capistranoを使用してコードを展開しようとしたときにも、この問題が発生しました。とてもイライラします。この問題に対処するために私が知っている2つの方法があります。
方法1:すべての既知のキーをSSHエージェントに追加します。
そのため、私が見つけた解決策の1つは、次のように、キーチェーンに保存されたパスフレーズを使用して既知のすべてのIDをSSHエージェントに追加ssh-add
する-A
オプションで実行することです。
ssh-add -A
これは機能しますが、再起動しても持続しません。このことを二度と心配したくない場合は、次の~/.bash_profile
ようにユーザーのファイルを開いてください。
nano ~/.bash_profile
そして、この行を一番下に追加します:
ssh-add -A 2>/dev/null;
これで、新しいターミナルウィンドウを開くと、すべてがうまくいくはずです!
方法2:キーチェーン内にあるSSHキーのみをエージェントに追加します。
そのため、このssh-add -A
オプションはほとんどの基本的なケースで機能するはずですが、最近一般的なid_rsa.pub
場所にあるマシンに6-7個のVagrantボックス(アクセスにSSHキー/ IDを使用)がセットアップされているという問題に遭遇しました。
簡単に言えば、サーバーアクセスはパスワードに基づいており、SSHキー/ IDはSSHキー/ IDであるため、SSHキー/ IDに基づく試行の失敗が多すぎるため、リモートサーバーからロックアウトされました。そのため、SSHエージェントはすべてのSSHキーを試行しましたが、失敗し、パスワードプロンプトを表示することさえできませんでした。
問題は、ssh-add -A
必要のない場合でも、必要なすべてのSSHキー/ IDをエージェントに任意に追加することです。Vagrantボックスの場合など。
多くのテストを行った後の私のソリューションは次のとおりでした。
最初に、必要以上に多くのSSHキー/ IDがエージェントに追加されている場合- ssh-add -l
次に示すように、エージェントからすべてを削除します。
ssh-add -D
それが完了したら、次のようにバックグラウンドプロセスとしてSSHエージェントを起動します。
eval "$(ssh-agent -s)"
今、それは奇妙になります、そして、私は理由があまりわかりません。場合によっては、次のように~/.ssh/id_rsa.pub
キー/アイデンティティをエージェントに明確に追加できます。
ssh-add ~/.ssh/id_rsa.pub
パスフレーズを入力してヒットするReturnと、準備が整います。
しかし、他のケースでは、単にこれを実行するだけで、キー/アイデンティティを追加するのに十分です:
ssh-add -K
それがすべて機能する場合は、入力するssh-add -l
と、1つの孤立したSSHキー/ IDが一覧表示されます。
いいですか 次を開きます.bash_profile
:
nano ~/.bash_profile
そして、この行を一番下に追加します。-A
バージョンがある場合はコメントするか削除してください:
ssh-add -K 2>/dev/null;
これにより、起動/再起動のたびにSSHキー/ IDがSSHエージェントにリロードされます。
更新:Appleは現在UseKeychain
、オープンSSH構成オプションにオプションを追加しssh-add -A
、解決策も検討しています。
macOS Sierra 10.12.2の時点で、Appleは(私が推測すると)UseKeychain
SSH構成の構成オプションを追加しました。(を介してman ssh_config
)manページをチェックすると、次の情報が表示されます。
UseKeychain
On macOS, specifies whether the system should search for
passphrases in the user's keychain when attempting to use a par-
ticular key. When the passphrase is provided by the user, this
option also specifies whether the passphrase should be stored
into the keychain once it has been verified to be correct. The
argument must be ``yes'' or ``no''. The default is ``no''.
これは追加のいずれかのような溶液を見てアップルに沸くssh-add -A
あなたに.bash_profile
、このオープンレーダーチケットに説明するように、または追加するUseKeychain
ユーザーごとのオプションの一つとして~/.ssh/config
。