SSHプライベートキーをKeychainに永続的に追加して、sshで自動的に使用できるようにするにはどうすればよいですか?


419

それはそうssh-add -K ~/.ssh/id_rsaあなたの鍵をロードしますが、パスワードの再起動するたびに要求されます。

ログイン間でキーパスワードを再入力する必要のないソリューションを探しています。


1
パスワードプロンプトがいつ表示されるかについてもう少し言えますか?私はあなたが私のMacのログインパスワードか何かと同じではありません保証するリモートサーバー用のSSHキーを持っているので、私は聞いて、私はのためのSSHキーのパスワードを入力する必要がありませんでした。ターミナルを開いて「ssh <server>」と入力するだけで、そこにいます。OSX 10.5でこのキーを最初に設定したと思います。id_dsa、しかし、私はそれが問題になるとは思わない。
マイケルH.

私のid_rsa鍵にはパスワードがあります。
ソリン

また、私がこれまでに解決した問題があり、自分が何をしたかを正確に思い出せません。しかし、私は考えは実行しないことだと思うが、直接実行するだけです。キーのパスフレーズとして表示されるウィンドウと、キーチェーンに保存できるチェックボックスが表示されます。ssh-addssh
ハラルドハンチェオルセン

1
@Sorin-私もそうです!ずっと前に一度入らなければならなかったので、それ以来Macがそれを保存してくれました。うまくいけば、ハラルドのアドバイスが役立つでしょう。
マイケルH.

キーチェーンパスワード(ログインパスワード)またはキーのパスフレーズを意味しますか?後者の場合、パスフレーズは間違いなくキーチェーンに保存されていますか?これを確認するには、キーチェーンアクセスを開き、ログインキーチェーンで探します。
マシューホール

回答:


687

OSXでは、ネイティブssh-addクライアントには、OSXキーチェーンに秘密鍵のパスフレーズを保存するための特別な引数があります。つまり、通常のログインでは、sshで使用するためにロック解除されます。OSX Sierra以降では、常にキーチェーンを使用するようにSSHを構成する必要があります(以下のステップ2を参照)。

または、パスフレーズなしでキーを使用できますが、このワークフローで確実に受け入れられるセキュリティを好む場合。

手順1-キーチェーンにキーを保存する

これを一度だけ実行してください:

ssh-add -K ~/.ssh/[your-private-key]

キーパスフレーズを入力すると、再度要求されることはありません。

(OSXのSierra以前のバージョンを使用している場合は、完了です。ステップ2は必要ありません。)

ステップ2-常にキーチェーンを使用するようにSSHを構成する

OSX Sierraはログイン間でキーを永続化する便利な動作を削除し、sshの更新ではデフォルトでキーチェーンを使用しなくなったようです。このため、アップグレード後、および再起動のたびに、キーのパスフレーズを入力するよう求められます。

解決策は非常に簡単で、このgithubスレッドコメントで概説されています。設定方法は次のとおりです。

  1. 上記の手順1を完了して、キーチェーンにキーを保存します。

  2. まだ作成していない場合は、~/.ssh/configファイルを作成します。言い換えれば、.sshホームディレクトリのディレクトリに、というファイルを作成しますconfig

  3. その.ssh/configファイルに、次の行を追加します。

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

    ~/.ssh/id_rsa秘密鍵の実際のファイル名に変更します。~.sshディレクトリに他の秘密鍵がある場合はIdentityFile、それぞれの行も追加します。たとえばIdentityFile ~/.ssh/id_ed25519、2番目の秘密キーを読み取る追加の行が1つあります。

    これUseKeychain yesは重要な部分であり、SSHがOSXキーチェーンでキーパスフレーズを探すように指示します。

  4. それでおしまい!次回ssh接続を読み込むと、指定した秘密鍵が試され、OSXキーチェーンでパスフレーズが検索されます。パスフレーズの入力は必要ありません。


2
これは私のためにほとんど働いた。私の「ログイン」キーチェーンでは、すでに自動ロックが無効になっているため、Matthew Sanabriaの答えは当てはまりませんでした。を使用ssh-add -K ...すると、パスワードの入力を求められることなく、現在のセッションに対してのみ、sshエージェントにキーが追加されます。再起動後、コマンドを再発行する必要がありました。
ポールスボー

4
@Poulsbo&@Abram-私の更新を参照してください。Sierraは自動動作を変更しましたssh-add -A。保存したキーチェーンをロードするには、手動で実行する必要があります。上記のいくつかの可能な解決策。
トリスウェブ

3
@triswebヒントをありがとう。.ssh/configファイルを変更するjoshbucheaのソリューションは有望に見えます!参照してくださいgithub.com/lionheart/openradar-mirror/issues/...
ポールスボー

2
@sorinは更新された回答を参照し、フィードバックがあればお知らせください。ありがとう!
トリスウェブ

9
よく働く!私の場合は、キーチェーンにキーを追加してパスフレーズを登録するために、Aフラグに加えてフラグを使用する必要がありKました(ssh-add -AK ~/.ssh/[your-private-key])。ありがとう!
ユースマン

22

同様の問題がありました。パブキーのパスフレーズを毎回要求されていたからです。

上記のユーザー「trisweb」の提案により、これらのオプションを〜/ .ssh / configで有効にしました。

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

ただし、sshを使用するたびにプロンプ​​トが表示されます。

最終的に「ssh -v」をオンにすると、次のデバッグ行が見つかりました。

debug1:key_load_private:秘密鍵を復号化するために指定されたパスフレーズが正しくありません

次に、「Keychain Access.app」でキーチェーンを開き、「SSH:/Users/username/.ssh/id_rsa」という名前のキーを見つけて開きました。

「パスワードを表示」をクリックしてパスワードを公開しましたが、キーリングのパスフレーズが古いパスフレーズであることがわかりました。

キーチェーンアクセスのパスフレーズを更新し、パスワードなしで動作するようになりました。

このフレーズでパスフレーズを更新することもできました。

ssh-keygen -p -f〜/ .ssh / id_rsa


13

「ログイン」キーチェーンは、非アクティブまたはスリープ、または場合によっては再起動後にロックされるため、毎回パスワードの入力を求められます。これを解決する方法は2つあります。

  1. 「ログイン」キーチェーンの設定を変更します。sshキーが「ログイン」キーチェーンに保存されていると仮定します。

    • キーチェーンアクセスを開く
    • 「ログイン」キーチェーンを強調表示します
    • 「ログイン」キーチェーンを右クリックまたはoptionキーを押しながらクリックします
    • [X分間非アクティブな状態でロックする]チェックボックスと[スリープ時にロックする]チェックボックスをオフにします。
  2. パスフレーズを使用せずに別のSSHキーを生成します。

    • ターミナルを開きます。
    • コマンドを入力してください: ssh-keygen -t rsa -b 4096 -C <comment> -f <.ssh/id_rsa>
    • -tはタイプ、-bはキーサイズ、-Cはコメント、-f出力ファイル(最初にディレクトリを作成する必要があります)
    • パスフレーズを設定しないでください。
    • SSHキーを「ログイン」キーチェーンにインポートします。 ssh-add -K <path to ssh key>

キーチェーンパスワードの入力を求められることはもうありません。


2
ssh-addSSH内部から呼び出す場合は、security unlock-keychain最初に呼び出す必要があることに注意してください。また、-fパラメータのディレクトリを作成する必要はありませんでした。残念ながら、私はまだ呼び出す必要がありましたsecurity unlocl-keychain...パスワードを毎回入力を求めログインキーチェーンにアクセスするために、SSHセッションで
オハッドシュナイダーに

2
要点は、キーにパスフレーズを付けることです。新しいSSHキーを生成することは、この質問に役立つとは思えません。
グレー

7

また、macOS SierraおよびHighSierra(以前のバージョンは知らない)では、実行ssh-add -Aすると、パスフレーズがキーチェーンに保存されているすべてのキーがエージェントに読み込まれます。


7

上記がすべて機能しなかったすべての人にとって、私の問題は、すべてのsshキープロファイル/ショートカットでUseKeychain yesAddKeysToAgent yesを複製していたためであったようです。~/.ssh/configこれらを一度だけ宣言するようにファイルを更新しました。これらはすべて、起動時にパスワードを要求することなくログイン時にロードされます。

Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/foo
  IdentityFile ~/.ssh/bar

Host foo
  HostName foo.com
  User fooUser
  IdentityFile ~/.ssh/foo

Host bar
  HostName bar.com
  User barUser
  IdentityFile ~/.ssh/bar

-3

以下に公開鍵を追加します。

.ssh/known_hosts

通常、公開鍵は次のとおりです。

/home/user/.ssh/id_rsa.pub

役立つことを願っています


8
私が意味を考えるauthorized_keys
ルネ・ラーセン

とにかく、複数のキーがある場合、これは機能しません!
ソリン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.