以前はパスフレーズを覚えていたが、今は毎回聞いてくるようになった
このコマンドで公開鍵を再生成する必要があると読んだので、それを実行しました
ssh-keygen -y -f id_rsa > id_rsa.pub
と言っても何も直らなかった
macOSにパスフレーズを再記憶させるにはどうすればいいですか?
640 erwan 2016-09-22
macOSの最新バージョン(10.12.2)では、これは簡単に修正できます。~/.ssh/config
を編集して UseKeychain
オプションを有効にするだけです
Host *
UseKeychain yes
他に何かを変更する必要はありません。これですべてが最新のアップデート前と同じように動くようになりました。ssh-agent
にキーを追加する必要はありません
編集: パスフレーズを一度入力する必要があるかもしれません。知らない場合は、これらの指示に従ってください
1225 Jukka Suomela 2016-12-19
私も同じ問題を抱えていました。MacOS Sierraのキーチェーンがパスフレーズを要求し続けます。id_rsaはセキュリティのためにパスフレーズで暗号化されているはずです。そして、それをキーチェーン ssh-add -K ~/.ssh/id_rsa
に追加してみてください
鍵が~/.ssh
以外のフォルダにある場合は、正しいフォルダで代用してください
Keychainはこれであなたのsshキーを認識し、うまくいけばすべてが動作するようになりました(私のはそうでした)
200 Lars G. 2016-09-23
これで私と同じような問題が解決しました
/usr/bin/ssh-add -K
パスフレーズをキーホルダーに保存します
アップデート(@EasyCoさんありがとうございます)。これは動作しますが、再起動の間は持続しません。このページにある @jukka-suomela さんの解決策は、再起動後も動作します。このページの @jukka-suomela さんの解決策は再起動間でも動作します
79 critikaster 2016-10-09
正しいパスフレーズを一度だけ入力しただけで動作し始めました。問題は元の SSH パスフレーズを覚えていないことでしたが、Github:の以下の手順で復元しました
- FinderでKeychain Accessアプリを検索します
- Keychain AccessでSSHを検索します
- SSH 鍵のエントリをダブルクリックすると、新しいダイアログボックスが開きます
- キーチェーンアクセスダイアログ左下の隅にある「パスワードを表示」を選択します
- 管理パスワードの入力を求められます。Keychain Access」ダイアログボックスに入力してください
- パスワードが公開されます
42 Olli Jaakkola 2016-10-29
新しいMacBook ProにEl Capitan以上のSierraをインストールした後、上記の解決策はいずれも動作しませんでした。Sierraは設計上、SSHキーをキーチェーンに保存しません
二つの解決策がありました。一つは ~/.bash_profile に ssh-add -A &> /dev/null
というコマンドを追加することです。ターミナルを開くたびに、このコマンドが実行されます (&> /dev/null
の部分はコマンドの出力を /dev/null というファイルに送ります)
もっと複雑ですが、少し巧妙な解決策は、Saving SSH keys in macOS Sierra keychainで提案されているように、OS が起動するたびに実行されるコマンドで plist を作成することです。これにはXcodeを使って作成する必要があります
19 Hank Snow 2016-09-27
一つの修正方法は、~/.ssh/config ファイルに以下を追加することです
Host *
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
UseKeychain yes
引用元: https://www.reddit.com/r/osx/comments/52zn5r/difficulties_with_sshagent_in_macos_sierra/ も参照してください。https://apple.stackexchange.com/a/264974/3810
18 ThomasW 2016-12-16
今朝、Sierraにアップデートしてから皆さんと同じ問題が発生しました。私の場合は、id_rsa
ファイルが暗号化されていて、復号化した後は問題なく動いていました
id_rsa
ファイルが暗号化されているかどうかを以下のコマンドで確認してください。cat ~/.ssh/id_rsa | head -2
- 2行目に
Proc-Type: 4,ENCRYPTED
と書いてあれば暗号化されているので、復号化してみてはいかがでしょうか - 重要: オリジナルの
id_rsa
ファイルのバックアップを作成してください!cp ~/.ssh/id_rsa ~/.ssh/id_rsa.bak
コマンドを使用してください - 秘密鍵を
openssl rsa -in ~/.ssh/id_rsa -out ~/.ssh/id_rsa.decrypted
で復号化してください - 元の鍵(
rm ~/.ssh/id_rsa
)を削除し、復号化された鍵に置き換える。mv ~/.ssh/id_rsa.decrypted ~/.ssh/id_rsa
これらの手順を踏むと、再び ssh を使用できるようになるはずです
8 Martijn Pieters 2016-09-22
ここで複数の回答を試してみましたが、やはりリモートキーの通過に問題がありました(capistrano使用時など)。それを解決するために、アップルのテクノノートを読んで、これを設定ファイルにしました。もうパスワードを聞かれることはありません
Host * IdentityFile ~/.ssh/id_rsa IgnoreUnknown UseKeychain UseKeychain yes AddKeysToAgent yes
8 Geek Goddess 2017-02-15
Capistrano を使用していくつかのコードをデプロイしようとしたときにも、この問題が発生しました。非常にイライラします。この問題に対処するために、私が知っている2つの方法があります
方法1: 既知のすべての鍵をSSHエージェントに追加します
これは、キーチェーンに保存されているパスフレーズを使って、すべての既知の ID を SSH エージェントに追加するものです
ssh-add -A
これで動作するようになりましたが、再起動しても持続しません。そのため、二度とこの心配をしたくない場合は、次のようにユーザーの ~/.bash_profile
ファイルを開いてください
nano ~/.bash_profile
そして、下の方にこの線を追加します
ssh-add -A 2>/dev/null;
これで、新しいターミナルウィンドウを開くと、すべてがうまくいくはずです
方法2:キーチェーンに入っているSSH鍵だけをエージェントに追加します
そのため、ssh-add -A
オプションはほとんどの基本的なケースで機能するはずですが、私は最近問題に遭遇しました
長い話をすると、サーバへのアクセスはパスワードに基づいており、SSHの鍵/アイデンティティはSSHの鍵/アイデンティティなので、SSHの鍵/アイデンティティに基づいた試行に失敗しすぎたために、リモートサーバから締め出されることになってしまいました。そのため、SSHエージェントは私のSSH鍵をすべて試して失敗し、パスワードプロンプトにもたどり着けませんでした
問題は、ssh-add -A
は必要がなくてもエージェントに持っているすべてのSSHキー/アイデンティティを恣意的に追加してしまうことです; 例えばVagrantボックスの場合のように
多くのテストを行った結果、私の解決策は以下のようになりました
まず、ssh-add -l
で示されているように、必要以上に多くのSSH鍵/IDがエージェントに追加されている場合は、次のようにエージェントからそれらをすべてパージします
ssh-add -D
それが終わったら、このようにバックグラウンドプロセスとしてSSHエージェントを起動します
eval "$(ssh-agent -s)"
さて、それは奇妙なことになり、私はあまり理由を確信していません。いくつかのケースでは、次のようにエージェントに~/.ssh/id_rsa.pub
キー/IDを追加することができます
ssh-add ~/.ssh/id_rsa.pub
パスフレーズを入力し、Returnを押せば完了です
しかし、他のケースでは、これを実行するだけでキー/IDが追加されます
ssh-add -K
すべてうまくいった場合は、ssh-add -l
と入力すると、1つの単独のSSH鍵/IDがリストアップされているのがわかるはずです
問題ありませんか?では、.bash_profile
を開いてみましょう
nano ~/.bash_profile
そして、この行を下の方に追加してください。-A
のバージョンがあればコメントするか削除してください
ssh-add -K 2>/dev/null;
これにより、起動/再起動のたびに SSH エージェントに SSH 鍵/ID を再ロードできるようになります
UPDATE: AppleはオープンSSH設定オプションにUseKeychain
オプションを追加し、ssh-add -A
も解決策と考えています
macOS Sierra 10.12.2の時点で、Apple(だと思います)はSSH設定のためのUseKeychain
設定オプションを追加しています。manページを確認すると(man ssh_config
経由で)以下のような情報が出てきます
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''.
Apple が解決策として見ているのは、ssh-add -A
を .bash_profile
このオープンレーダーのチケットで説明されているように、ssh-add -A
を追加するか、UseKeychain
をユーザーごとの~/.ssh/config
のオプションの一つとして追加するかのどちらかだということです
5 Giacomo1968 2017-01-02
Jukka Suomelaさんの回答が正しいのですが、openssh
をhomebrew
からインストールしたものを使っているのであれば、それも一緒にアンインストールする必要があります
brew remove openssh
homebrew のものは UseKeychain
の ssh 設定エントリをサポートしていないので、システムのデフォルトの openssh に戻します
4 Greg Dubicki 2017-01-28
ここで提案されたすべての解決策を試してみましたが、Macにキーチェーンが設定されていません
ローカルマシンとリモートマシンの両方で、先頭の.ssh/config
ファイルに以下の行を追加するとうまくいきました
PubkeyAcceptedKeyTypes=+ssh-dss
2 Roei Bar Aviv 2017-01-01
macOSの起動毎に.plist
ファイルを~/Library/LaunchAgents/
に追加してssh-add -A
を実行する必要があります
これを行うコマンドが一つあります (SSH-keys-in-macOS-Sierra-keychain)
curl -o ~/Library/LaunchAgents/ssh.add.a.plist https://raw.githubusercontent.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain/master/ssh.add.a.plist
2 AlecRust 2016-12-10