macOS 10.12 Sierraはsshキーファイルパスフレーズを忘れません


25

新しい暗号化id-rsaキーファイルを作成ssh-keygenして初めて使用した後、macOSにパスフレーズを忘れさせることはできません。これは、OS Xにsshキーパスフレーズの質問を記憶させないようにする方法に似ていますが、さらに悪いことです。

再起動してを殺してssh-agent、すべてのキーチェーンをロックしましたが、まだどこかに保存されているようです。ただし、キーチェーンで見つけることができません。これは非常に安全ではないようです。Keychain / ssh-agentで削除されなかったSSH秘密鍵パスワードに対する回答も役に立たない。

実際、パスフレーズを保存するかどうかを尋ねるダイアログが表示されなくなりました。


実際に暗号化されているかどうかを確認しましたか?
ジョンキーツ

うん。sshが初めて使用するときにパスフレーズを要求するので、それはかなり確実です。誰かが実際にこれを再現できますか?
hogliux

まあ、それは私のセットアップでもそのように動作します。それはssh / ssh-agentが設定された方法です。
ジョンキーツ

これは、チェックボックスをクリックしてmacOSにパスフレーズをキーチェーンに保存するように指示した場合に当てはまります。ただし、そのチェックボックスをクリックしない場合、macOSは常にパスフレーズを要求するはずです。しかし、クリックした場合でも、キーチェーンユーティリティでいつでも削除できました。Sierra以降、ダイアログボックスは表示されなくなり、キーチェーンユーティリティにはエントリがありません。
hogliux

これは私が話しているダイアログボックスで、もう存在しないようです:dribin.org/dave/resources/pictures/ssh_leopard_dialog.png
hogliux

回答:


27

キーチェーンへのパスフレーズの保存を無効にするには、〜/ .ssh / configファイルに次の行を追加する必要があります。

Host *
UseKeyChain no

既にキーチェーンにパスフレーズが保存されている場合は、コマンドを使用してパスフレーズを削除できます。

cd ~/Library/Keychains/<UUID>/
sqlite3 keychain-2.db 'delete from genp where agrp="com.apple.ssh.passphrases"'

OS X El Capitan以前のような動作(つまり、ログアウトまたは再起動までパスフレーズを保存する)を希望する場合は、単に〜/ .ssh / configに追加します。

AddKeysToAgent yes

ssh-agentを起動する必要はありません。


1
この答えは永久に問題を解決します!そこで、これを正解としてマークしました。ありがとうございました!
hogliux

編集案:明確にLibrary/Keychains/<UUID>/する~/Library/Keychains/<UUID>/ために変更:)
モハメドハフェズ

提案された編集の受け入れ:)
mbamac

20

Cliveのおかげで、この新しい「機能」についての理解が深まりました。パスフレーズを入力すると、Sierraはキーチェーンに追加しますが、ssh-agentには追加しません。IDがssh-agentにない場合、で管理する方法はありませんssh-add。キーチェーンからIDを管理(削除)するにはssh-agent、を使用してIDを追加する必要がありますssh-add。IDを追加したら、ssh-agentそれを使用ssh-add -K -dしてssh-agentキーチェーンから削除できます。ssh addを使用するたびにIDをssh-agentに追加する場合:

AddKeysToAgent yes

.ssh/config。これにより、ssh-agent常にあなたの身元を確認できます。


ただフォローアップ。「UseKeyChain no」を.ssh / configに追加すると、キーチェーンがパスフレーズを追加できなくなります。ssh-agentで「AddKeysToAgent yes」を保持する場合は、再起動するかssh-add -dを使用するまでパスフレーズが保持されます。
ジーンフレンクラー

これには、Appleが出荷したOpenSSHを使用する必要があることに注意してください。このパッチは、のよう自家製に含まれていませんhomebrew/dupes/openssh: stable 7.3p1
ライアン・ギボンズ

3
ssh-add -K -d

これにより、以前にキーチェーンに保存されていたパスフレーズを削除できます。macOS 10.12 Sierra以降、キーチェーンに再度保存されたパスフレーズを避けるために、必ずssh-add最初に実行してください。


はい。これは、以前のバージョンのmacOS Sierraで機能していました。しかし、もう機能しません。macOS Sierraはまだパスフレーズを記憶しています。
-hogliux

1
OK。さらなる調査。一度忘れてしまいますが、どこでも(ssh、scp、gitなど)使用すると、キーチェーンに戻ります。ある種の見知らぬ人が私に直接メールを送り、パスフレーズが〜/ Library / Keychains / <SOME-UUID> /keychain-2.dbに保存されているようだとわかりました。しかし、ログインキーチェーン(および他のすべてのキーチェーン)をロックする場合でも、パスフレーズにアクセスするときにos xはキーチェーンパスワードを要求しません。それは本当に正しくないようです。
hogliux

実際、Sierraではパスフレーズは通常のログインキーチェーンではなく、そのキーチェーンの場所に保存されているようです。
m1keil
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.