SierraにアップデートしてからmacOSがsshのパスフレーズを尋ねてくる

macos ssh

以前はパスフレーズを覚えていたが、今は毎回聞いてくるようになった

このコマンドで公開鍵を再生成する必要があると読んだので、それを実行しました

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 さんの解決策は再起動間でも動作します

Attention Required! | Cloudflare

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ファイルが暗号化されていて、復号化した後は問題なく動いていました

  1. id_rsaファイルが暗号化されているかどうかを以下のコマンドで確認してください。cat ~/.ssh/id_rsa | head -2
  2. 2行目にProc-Type: 4,ENCRYPTEDと書いてあれば暗号化されているので、復号化してみてはいかがでしょうか
  3. 重要: オリジナルのid_rsaファイルのバックアップを作成してください!cp ~/.ssh/id_rsa ~/.ssh/id_rsa.bakコマンドを使用してください
  4. 秘密鍵をopenssl rsa -in ~/.ssh/id_rsa -out ~/.ssh/id_rsa.decryptedで復号化してください
  5. 元の鍵(rm ~/.ssh/id_rsa)を削除し、復号化された鍵に置き換える。mv ~/.ssh/id_rsa.decrypted ~/.ssh/id_rsa

これらの手順を踏むと、再び ssh を使用できるようになるはずです

8  Martijn Pieters  2016-09-22


ここで複数の回答を試してみましたが、やはりリモートキーの通過に問題がありました(capistrano使用時など)。それを解決するために、アップルのテクノノートを読んで、これを設定ファイルにしました。もうパスワードを聞かれることはありません

Technical Note TN2449: OpenSSH updates in macOS 10.12.2
TN2449: describes changes to OpenSSH in macOS 10.12.2.
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さんの回答が正しいのですが、opensshhomebrewからインストールしたものを使っているのであれば、それも一緒にアンインストールする必要があります

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


タイトルとURLをコピーしました