web-dev-qa-db-ja.com

Sierraにアップデートしてから、macOSは私のsshパスフレーズを要求し続けます

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

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

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

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

どうやってmacOSに自分のパスフレーズを記憶させることができますか?

572
erwan

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

Host *
    UseKeychain yes

他に何も変更する必要はありません。今ではすべてが最新のアップデートの前に機能していた方法で機能します。 ssh-agentにキーを追加する必要はありません。


編集:パスフレーズを1回入力する必要があるかもしれません。あなたがそれを知らないならば、 これらの指示 に従ってそれを明らかにしてください。

1102
Jukka Suomela

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

あなたの鍵が~/.ssh以外のフォルダにある場合は、正しいフォルダに置き換えてください。

Keychainはあなたのsshキーを知っています、そしてうまくいけば、今すべての仕事ができました(私の行ったこと)

179
Lars G.

これは私の同じような問題を修正しました:

/usr/bin/ssh-add -K

これはパスフレーズをキーチェーンに保存します。

更新(Thanks @EasyCo):これは機能しますが、再起動しても持続しません。このページの@ jukka-suomelaの解決方法は再起動後も機能します。その答えはここにあります。

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

67
critikaster

私は一度だけ正しいパスフレーズを入力する必要があり、それは働き始めました。問題は、私がオリジナルのSSHパスフレーズを覚えていないことでしたが、Githubからの これらのステップに従うことによってそれを回復しました:

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

上記の解決策はどれも、新しい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を使ってファイルを作成することが含まれます。

18
Hank Snow

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

15
ThomasW

今朝、私はシエラにアップデートした後あなたと同じ問題を抱えていました。私の場合、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を使うことができるはずです。

7
Martijn Pieters

私はここで複数の答えを試してみましたが、それでもリモート鍵の受け渡しに問題がありました(capistranoを使うときなど)。それを解決するために、私はアップルから技術情報を読み、これを私の設定ファイルにしました。これ以上私のパスワードを要求する必要はありません。

https://developer.Apple.com/library/content/technotes/tn 2449/_index.html

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

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

brew remove openssh

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

3
Greg Dubicki

Capistrano を使用してコードをデプロイしようとしたときにも、この問題が発生しました。非常にイライラする。この問題に対処するために私が知っている2つの方法があります。

方法1:SSHエージェントにall knownキーを追加する。

そこで、私が見つけた解決策の1つは、ssh-addオプションを指定して -A を実行することです。これにより、キーチェーンに格納されているパスフレーズを使用してSSHエージェントにすべての既知のIDが追加されます。

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鍵をallしようとしましたが、失敗しました。パスワードプロンプトを表示することすらできませんでした。

問題は、必要でなくてもssh-add -Aがあなたが持っているすべてのSSHキー/ IDをエージェントに任意に追加するだけだということです。 Vagrantボックスの場合などです。

多くのテストの後の私の解決策は以下の通りでした。

ssh-add -lで示されているように、あなたが必要以上にあなたのエージェントに追加されたSSHキー/アイデンティティを持っているなら、最初に、次のようにそれらをすべてエージェントから削除してください:

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キー/ IDをSSHエージェントにリロードできます。

アップデート:Appleは現在、open 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このOpen Radarチケットで説明されているように に追加すること、あるいはユーザごとの~/.ssh/configのオプションの1つとしてUseKeychainを追加することとして解決します。

3
JakeGould

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
1
AlecRust

ここで提案されているすべての解決策を試してみましたが、私のMacにはキーチェーンを設定していません。

ローカルマシンとリモートマシンの両方の上の.ssh/configファイルの次の行に追加することは私のために働きました。

PubkeyAcceptedKeyTypes=+ssh-dss 
1
Roei Bar Aviv