2016-09-22 09:21:53 +0000 2016-09-22 09:21:53 +0000
607
607

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

以前はパスフレーズを覚えていたのですが、今は毎回パスフレーズを聞いてくるようになりました。

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

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

0x1&

でも何も解決しなかった。

回答 (12)

1168
1168
1168
2016-12-19 12:04:25 +0000

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

Host *
    UseKeychain yes

他に何も変更する必要はありません。これですべてが最新のアップデート前と同じように動作するようになりました。ssh-agent にキーを追加する必要はありません。


Edit: パスフレーズを一度入力する必要があるかもしれません。知らない場合は、 以下の手順 に従ってください。

193
193
193
2016-09-23 12:53:05 +0000

私も同じ問題を抱えていました。MacOS Sierraのキーチェーンは、パスフレーズを要求し続ける。あなたのidrsaは、セキュリティのためにパスフレーズで暗号化されているはずです。`ssh-add -K ~/.ssh/idrsa`

鍵が~/.ssh以外のフォルダにある場合は、正しいフォルダで代用してください。

これでKeychainはあなたのssh鍵を認識し、うまくいけばすべてが動作するようになります (私の場合はそうでした)。

75
75
75
2016-10-09 14:39:56 +0000
/usr/bin/ssh-add -K

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

0x1&

これはキーチェーンにパスフレーズを保存します。これは動作しますが、再起動時には持続しません。このページにある @jukka-suomela さんの解決策は、再起動時にも動作します。その答えはここにあります。 https://superuser.com/a/1158050/234685

41
41
41
2016-10-29 17:16:24 +0000

正しいパスフレーズを一度だけ入力するだけで、動作し始めました。問題は、元の SSH パスフレーズを覚えていないことでしたが、 以下の手順を Github から:

  • Finder で、Keychain Access アプリを検索します。
  • Keychain AccessでSSHを検索。
  • SSH 鍵のエントリをダブルクリックして、新しいダイアログボックスを開きます。
  • Keychain accessダイアログ左下の「Show password」を選択します。
  • 管理パスワードの入力を求められます。キーチェーンアクセス」ダイアログボックスにパスワードを入力します。
  • パスワードが表示されます。
19
19
19
2016-09-27 14:40:37 +0000

新しいMacBook ProにEl Capitan以上のSierraをインストールした後、上記の解決策はいずれも動作しませんでした。Sierraは設計上、SSHキーをキーチェーンに保存しません。

2つの解決策がありました。一つは ~/.bash_profile に ssh-add -A &> /dev/null コマンドを追加することです。ターミナルを開くたびに、このコマンドが実行されます (&> /dev/null の部分はコマンドの出力を /dev/null というファイルに送ります)。

もっと複雑だけど少し巧妙な解決策は、Saving SSH keys in macOS Sierra keychain で提案されているように、OS が起動するたびに実行されるコマンドを含む plist を作成することです。これにはXcodeを使ってファイルを作成する必要があります。

18
18
18
2016-12-16 06:14:08 +0000

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/ Also see. https://apple.stackexchange.com/a/264974/3810

8
8
8
2016-09-22 10:58:21 +0000

今朝、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 で復号化する。元の鍵(rm ~/.ssh/id_rsa)を削除し、復号化されたものと交換します。mv ~/.ssh/id_rsa.decrypted ~/.ssh/id_rsa

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

8
8
8
2017-02-15 02:15:22 +0000

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

Host *  
IdentityFile ~/.ssh/id_rsa  
IgnoreUnknown UseKeychain  
UseKeychain yes  
AddKeysToAgent yes
5
5
5
2017-01-02 00:05:33 +0000

Capistrano](http://capistranorb.com/)を使用していくつかのコードをデプロイしようとしたときにもこの問題がありました。非常にイライラします。この問題に対処するために、私が知っている2つの方法を紹介します。

方法1: 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 鍵/アイデンティティは SSH 鍵/アイデンティティなので、SSH 鍵/アイデンティティに基づいた試行に失敗しすぎたために、リモートサーバから締め出されてしまいました。そのため、SSHエージェントは私のSSH鍵のallを試して失敗し、パスワードプロンプトにもたどり着けませんでした。

問題なのは、ssh-add -Aは必要がなくてもエージェントに持っているすべてのSSH鍵/アイデンティティを任意に追加してしまうということです; 例えばVagrantボックスの場合のように。

テストを重ねた結果、私の解決策は以下のようになりました。

まず、エージェントに追加されている SSH 鍵や ID が必要以上に多い場合は、ssh-add -l のようにエージェントからそれらをすべて削除します。

ssh-add -D

これが完了したら、次のようにバックグラウンドプロセスとして SSH エージェントを起動します。

eval "$(ssh-agent -s)"

さて、これでおかしくなってきました。場合によっては、次のようにエージェントに ~/.ssh/id_rsa.pub のキー/ID を追加することができます。

ssh-add ~/.ssh/id_rsa.pub

パスフレーズを入力してReturnを押せば完了です。

ssh-add -K

これでうまくいった場合は、ssh-add -l と入力してください。

nano ~/.bash_profile

すべて問題ありませんか? では、.bash_profile を開いてみましょう。

ssh-add -K 2>/dev/null;

そして一番下に次の行を追加してください。

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 エージェントに SSH 鍵/ID を再ロードできるようになります。

UPDATE: Appleは現在、オープンなSSH設定オプションに-Aのオプションを追加し、UseKeychainも解決策と考えています。

macOS Sierra 10.12.2の時点で、Apple(だと思いますが)はSSHの設定オプションにssh-add -Aを追加しています。manページ(UseKeychain経由)をチェックすると以下のような情報が表示されます。

0x1&

これは Apple が解決策として、man ssh_configssh-add -A を追加するか この Open Radar のチケットで説明されているように を追加するか、ユーザごとの .bash_profile のオプションの一つとして UseKeychain を追加するかのどちらかだと考えていることを示しています。

4
4
4
2017-01-28 08:58:48 +0000

Jukka Suomela さんの回答が正しいのですが、opensshからインストールしたhomebrewを使っているのであれば、アンインストールも一緒に行う必要があります。

brew remove openssh

…システムのデフォルトのopensshに戻すには、次のようにアンインストールする必要があります: homebrewのものはUseKeychainのssh設定エントリをサポートしていないので。

2
2
2
2016-12-10 21:04:01 +0000

macOSの起動時に毎回.plistを実行するためには、~/Library/LaunchAgents/に追加されたssh-add -Aファイルが必要です。

これを実行するコマンドが1つあります( SSH-keys-in-macOS-Sierra-keychain から)。

2
2
2
2017-01-01 23:56:10 +0000

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

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

PubkeyAcceptedKeyTypes=+ssh-dss