macOSはSierraに更新してからsshパスフレーズを尋ね続けます


582

以前はパスフレーズを覚えていましたが、今では毎回それを尋ねています。

私はこのコマンドで公開鍵を再生成する必要があることを読みました。

ssh-keygen -y -f id_rsa > id_rsa.pub

しかし、それは何も修正しませんでした。

macOSにパスフレーズを再度記憶させるにはどうすればよいですか?


関連する動作が発生しています:以前は、キーリングダイアログがポップアップしてパスワードを要求していましたが、今では通常のSSHコンソールプロンプトが表示されます。一部のヘルパープログラムの登録はおそらく削除されています。
ダニエルB

1
id_rsaを生成してから何年も経ちましたが、パスフレーズを使用したことはなく、これを使用して多くのサーバーにSSH接続しました。私は本当にパスフレーズを持っていますか、それともシエラが私がそうすべきだと思っているのですか?$ cat〜/ .ssh / id_rsa | ヘッド-2 ----- RSAプライベートキーを開始
ジョーマレー


Pretzoを使用していて、これらの回答で問題が解決しない場合:でsshモジュールが有効になっていないことを確認してくださいzpretzorc。とにかくmacOSでは不要であり、有効にすると、追加した後でもパスフレーズの入力を求められますUseKeychain
ジモシー

1
ssh -v ...有用なデバッグ情報があるかどうかを確認してみてください
...-rogerdpack

回答:


1121

macOSの最新バージョン(10.12.2)では、これは簡単に修正できます。を編集して~/.ssh/configUseKeychainオプションを有効にします。

Host *
    UseKeychain yes

他に何かを変更する必要はありません。これで、すべてが最新の更新前の動作と同じように機能します。にキーを追加する必要はありませんssh-agent


編集:パスフレーズを一度入力する必要がある場合があります。わからない場合は、以下の指示に従って明らかにしてください。


24
これは私のために絶対に働いた。以下はすべて、この修正よりも複雑に思えます。
Br.Bill

81
Host *ブロックは(ほとんど)常に~/.ssh/configファイルの下部に配置する必要があることに注意してください。ssh設定を探しているときは、見つけた最初の値を使用します。したがって、ワイルドカードブロックを最後に配置することで、一連のデフォルトとして機能します。ファイルの前の方で指定することにより、特定のホストの設定を上書きできます。
モロンビー

6
これは私にとってもうまくいきましたが、パスフレーズを一度正しく入力する必要がありました。覚えていない場合にパスワードを表示する方法を説明する別の回答があります。
FGreg

26
構成ファイルが存在しない場合は、構成ファイルを作成して追加することもできます。
ウィンシャフト

6
Host *見出しは必要ありません。これをすべてのホストに適用する場合UseKeychain yesは、先頭に1行追加するだけ.ssh/configです。
sj26

183

同じ問題がありました。MacOS Sierraキーチェーンはパスフレーズを要求し続けます。id_rsaは、セキュリティのためにパスフレーズで暗号化する必要があります。それをキーチェーンに追加してみてくださいssh-add -K ~/.ssh/id_rsa

キーが別のフォルダーにある場合~/.sshは、正しいフォルダーに置き換えてください。

キーチェーンはあなたのsshキーを知っています。


25
これは機能しますが、コンピューターを再起動しても持続しないようです。同じ問題を抱えている人はいますか?
joshua.paling

1
うん、ここで同じ問題。@ joshua.paling
kingkool68

18
@ joshua.paling、kingkool68-Appleは、主流のOpenSSHの動作に準拠するために、再起動後もSSHキーを記憶する機能を削除しました。:同じ機能を実現する他の方法については、この質問を参照してくださいapple.stackexchange.com/questions/254468/...
エヴァン・ポン

@EvanPonしかし、それは暗号化されたキーでは機能しません。
コンラッドルドルフ

2
@KonradRudolphそれは私のために働く。ssh-addこの-Aオプションを使用して呼び出すと、MacOSキーチェーンで問題のIDのパスワードが検索されます。パスワードがキーチェーンにない場合、プロンプトが表示されると思います。
エヴァンポン

72

これは私の同様の問題を修正しました:

/usr/bin/ssh-add -K

これにより、キーチェーンにパスフレーズが保存されます。

更新(@EasyCoに感謝):これは機能しますが、再起動間は持続しません。@このページのユッカ・suomelaのソリューションはない再起動しても動作します。あなたはその答えをここで見つけることができます:

https://superuser.com/a/1158050/234685


3
これが唯一の機能です。
cryptic0

5
このソリューションを使用するときに.ssh / .configを作成する必要はありませんでした。
シャイ

これは私のために働いた。ホストファイルを編集する必要はありません。私はシエラにいます。
-cchiera

これはMac OS Sierraでうまくいきました。
デイロンガヤルド

2
前述のように、これは機能しますが、再起動間は持続しません。@ jukka-suomelaのソリューションは、再起動後も機能します。
-EasyCo

40

正しいパスフレーズを1回入力するだけで、機能し始めました。問題は、元のSSHパスフレーズを思い出せなかったということでしたが、Githubからの手順を実行して回復しました

  • Finderで、キーチェーンアクセスアプリを検索します。
  • キーチェーンアクセスで、SSHを検索します。
  • SSHキーのエントリをダブルクリックして、新しいダイアログボックスを開きます。
  • キーチェーンアクセスダイアログ左下隅で、[パスワードの表示]を選択します。
  • 管理パスワードの入力を求められます。[キーチェーンアクセス]ダイアログボックスに入力します。
  • パスワードが表示されます。

2
動作しません。ターミナルはまだ「悪いパスフレーズ」と言う
ジェイデンローソン

18

新しいMacBook ProにEl Capitanを介してSierraをインストールした後、上記のソリューションはいずれも機能しませんでした。設計上のSierraは、キーチェーンにSSHキーを保存しません。

2つのソリューションが効果的でした。1つは、コマンドssh-add -A &> /dev/nullを〜/ .bash_profile に追加することです。ターミナルを開くたびに、このコマンドが実行されます(&> /dev/nullパーツはコマンドの出力をファイル/ dev / nullに送信します)。

より複雑ではあるが少し洗練されたソリューションは、macOS SierraキーチェーンでのSSHキーの保存で提案されているように、OSが起動するたびに実行されるコマンドでplistを作成することです。これには、Xcodeを使用してファイルを作成することが含まれます。


これは、同様に、Appleの公式な答えであるように思われる-を参照してopenradar.appspot.com/27348363
ニック・メイナード

私にとってこれまでの最高のソリューション。Mac OSX Sierra(10.12.2)を使用しています。
zyc

15

1つの修正方法は、〜/ .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


これまでのところ、いずれの回答でもBad configuration option: usekeychain、UseKeychainで発生するエラーについては誰も言及していません(ただし大文字で表記されています)。しかし、その行だけを削除してAddKeysToAgentとIdentityFileを残すことで機能させることできました(まだパスフレーズを入力する必要があります)。これはmacOS Sierra 10.12.6でのものです。
ウィリアムタレル

これは、私が端末にいてsshコマンドを使用している場合は正常に動作しますが、独自の端末を使用するWebStormなどの他のアプリは、通常の端末で最初にsshコマンドを使用するまでこの設定を行いません。それはどこでも動作します、何か提案はありますか?
サンティアゴarizti

@WilliamTurrellこれはまだ、タイプが発生した場合which sshは、使用していることを確認するために/usr/bin/ssh何かの下にされるであろう、フィンクまたはMacPortsのからバージョンをしていない/usr/local/bin/ssh/opt/local/bin/ssh
ステファンLasiewski

7

今朝、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を再び使用できるようになります。


4
これは一種の回避策です、OPの問題を本当に解決できるとは思いません。
ダニエルB

これは私のために動作します。@DanielB、これを行うことの問題は何ですか?
ダグホイダール16

7
@DagHøidahlキーは暗号化されなくなります。通常のユーザー権限で盗まれる可能性があるため、暗号化は強力である必要があります。
ダニエルB

6
これにより、キーからパスワードが削除されるため、OPの問題を回避できます。しかし、これにはお勧めしません。パスワードは、盗まれたときに他の人があなたのキーを使用するのを阻止するものです。あなたのキーはおそらく複数のシステムへのアクセスを与えるので、あなたはそれを弱めたくありません。
マーティン・ヘメルズ16年

5

ここで複数の回答を試みましたが、リモートキーの受け渡しに関する問題が引き続き発生していました(capistranoを使用する場合など)。それを解決するために、アップルから技術情報を読み、これを設定ファイルにしました。パスワードを要求する必要はもうありません!

https://developer.apple.com/library/content/technotes/tn2449/_index.html

Host *  
   IdentityFile ~/.ssh/id_rsa  
   IgnoreUnknown UseKeychain  
   UseKeychain yes  
   AddKeysToAgent yes

3

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は(私が推測すると)UseKeychainSSH構成の構成オプションを追加しました。(を介して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


3

Jukka Suomela答えは正しいですが、opensshからインストールしたものを使用している場合はhomebrew、次の方法でアンインストールする必要もあります。

brew remove openssh

...システムのデフォルトのopensshに戻すには、homebrewのものがUseKeychainssh設定エントリをサポートしていないためです。


1
誰かがhomebrewでそれを望んでいるなら、ここにpingしてください:github.com/rdp/homebrew-openssh-gssapi
rogerdpack

1

ここで提案されているすべてのソリューションを試しましたが、Macにキーチェーンが設定されていません。

.ssh/configローカルマシンとリモートマシンの両方で、先頭ファイルの次の行に追加するとうまくいきました。

PubkeyAcceptedKeyTypes=+ssh-dss 

1

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.