以前はパスフレーズを覚えていましたが、今は毎回それを聞いています。
私はこのコマンドで公開鍵を再生成する必要があることを読みました。
ssh-keygen -y -f id_rsa > id_rsa.pub
しかし、それは何も修正しませんでした。
どうやってmacOSに自分のパスフレーズを記憶させることができますか?
最新バージョンのmacOS(10.12.2)では、これは簡単に修正できます。 ~/.ssh/config
を編集してUseKeychain
オプションを有効にするだけです。
Host *
UseKeychain yes
他に何も変更する必要はありません。今ではすべてが最新のアップデートの前に機能していた方法で機能します。 ssh-agent
にキーを追加する必要はありません。
編集:パスフレーズを1回入力する必要があるかもしれません。あなたがそれを知らないならば、 これらの指示 に従ってそれを明らかにしてください。
私は同じ問題を抱えていました。 MacOS Sierraのキーチェーンはパスフレーズを要求し続けます。セキュリティのため、id_rsaはパスフレーズで暗号化する必要があります。それをキーチェーンssh-add -K ~/.ssh/id_rsa
に追加してみてください
あなたの鍵が~/.ssh
以外のフォルダにある場合は、正しいフォルダに置き換えてください。
Keychainはあなたのsshキーを知っています、そしてうまくいけば、今すべての仕事ができました(私の行ったこと)
これは私の同じような問題を修正しました:
/usr/bin/ssh-add -K
これはパスフレーズをキーチェーンに保存します。
更新(Thanks @EasyCo):これは機能しますが、再起動しても持続しません。このページの@ jukka-suomelaの解決方法は再起動後も機能します。その答えはここにあります。
私は一度だけ正しいパスフレーズを入力する必要があり、それは働き始めました。問題は、私がオリジナルのSSHパスフレーズを覚えていないことでしたが、Githubからの これらのステップに従うことによってそれを回復しました:
上記の解決策はどれも、新しい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を使ってファイルを作成することが含まれます。
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
今朝、私はシエラにアップデートした後あなたと同じ問題を抱えていました。私の場合、id_rsa
ファイルは暗号化されており、復号化した後は魅力的に機能していました。
id_rsa
ファイルが暗号化されているかどうかを確認します。cat ~/.ssh/id_rsa | head -2
Proc-Type: 4,ENCRYPTED
と表示されている場合、それは暗号化されているので、復号化してみてください。id_rsa
ファイルのバックアップを作成してください。 cp ~/.ssh/id_rsa ~/.ssh/id_rsa.bak
コマンドを使うopenssl rsa -in ~/.ssh/id_rsa -out ~/.ssh/id_rsa.decrypted
で復号化しますrm ~/.ssh/id_rsa
)を削除して、復号化したキーと置き換えます。mv ~/.ssh/id_rsa.decrypted ~/.ssh/id_rsa
これらのステップの後、あなたは再びsshを使うことができるはずです。
私はここで複数の答えを試してみましたが、それでもリモート鍵の受け渡しに問題がありました(capistranoを使うときなど)。それを解決するために、私はアップルから技術情報を読み、これを私の設定ファイルにしました。これ以上私のパスワードを要求する必要はありません。
https://developer.Apple.com/library/content/technotes/tn 2449/_index.html
Host * IdentityFile ~/.ssh/id_rsa IgnoreUnknown UseKeychain UseKeychain yes AddKeysToAgent yes
Jukka Suomela の の答え は正しいですが、openssh
を使用している場合homebrew
からインストールした場合は、次のコマンドでアンインストールする必要もあります。
brew remove openssh
...自作のものはUseKeychain
ssh設定エントリをサポートしていないので、システムデフォルトのopensshに戻すため。
Capistrano を使用してコードをデプロイしようとしたときにも、この問題が発生しました。非常にイライラする。この問題に対処するために私が知っている2つの方法があります。
そこで、私が見つけた解決策の1つは、ssh-add
オプションを指定して -A
を実行することです。これにより、キーチェーンに格納されているパスフレーズを使用してSSHエージェントにすべての既知のIDが追加されます。
ssh-add -A
これでうまくいきますが、再起動しても持続しません。二度とこのことについて心配したくない場合は、ユーザーの~/.bash_profile
ファイルを次のように開いてください。
nano ~/.bash_profile
そしてこの行を一番下に追加します。
ssh-add -A 2>/dev/null;
これで、新しいターミナルウィンドウを開いたときに、すべてうまくいくはずです。
そのため、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エージェントにリロードできます。
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
を追加することとして解決します。
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
ここで提案されているすべての解決策を試してみましたが、私のMacにはキーチェーンを設定していません。
ローカルマシンとリモートマシンの両方の上の.ssh/config
ファイルの次の行に追加することは私のために働きました。
PubkeyAcceptedKeyTypes=+ssh-dss