Keychain が id_rsa.pub が見つからないと警告するのはなぜですか?

Keychain が id_rsa.pub が見つからないと警告するのはなぜですか?

私が読んでいるこの記事Duplicity で無人バックアップを設定する方法について説明します。

私は7.2. SSH KeyCachingという部分にいます

私はルートに以下を追加しました.bash_profile

keychain --clear id_rsa 
. /root/.keychain/www-sh

記事キーチェーンが起動し、この時点で秘密鍵 (/root/.ssh/id_rsa) のパスフレーズを要求されるはずです。

ここでは期待した結果が得られません。キーチェーンは確かに起動しますが、この時点でいくつかの警告が表示されます。

KeyChain 2.6.8; http://www.gentoo.org/proj/en/keychain/
Copyright 2002-2004 Gentoo Foundation; Distributed under the GPL

 * Found existing ssh-agent (2014)
 * ssh-agent: All identities removed.
 * Warning: /root/.ssh/id_rsa.pub missing; can't tell if /root/.ssh/id_rsa is loaded

root@www:~# 

これについては、Gentoo フォーラムしかし、スレッドのユーザーは、キーチェーンがなぜ公開鍵を要求するのかについて困惑しているようid_rsa.pubで、キーチェーンがなぜ公開鍵を要求するのか知っている人がいるかどうか疑問に思いました。

答え1

私はキーチェーンの内部の仕組みについて全く知らないことを率直に認めますが、ローカル SSH エージェントが、持っている秘密鍵に対応する公開鍵を持っていないことに腹を立てるのはまったく当然です。

リモート サーバーに認証を依頼するとどうなるか考えてみましょう。リモート サーバーは、ファイルからauthorized_keys、その中の各エントリに対応する秘密鍵を持っていることを証明できるクライアントを受け入れる準備ができていることを認識しています。しかし、クライアントにそれを要求するにはどうすればよいでしょうか。リモート サーバーは、秘密鍵自体やそのプロパティを渡すことはできません。なぜなら、秘密鍵を持っていないからです。リモート サーバーができるのは、受け入れる公開鍵またはその指紋を提示することだけです。

クライアントがこれらの公開鍵のいずれかを持っている場合、対応する秘密鍵を即座に選択し、サーバーが正しいと受け入れる応答を行うことができます。公開鍵を持っていない場合は、どうすればよいのでしょうか。レパートリーにあるすべての秘密鍵を順番に試すのでしょうか。安全でない情報開示のよりよい方法は想像しがたいものです。ブラックハットは、キーリング内のすべてのキーから正当な応答を収集するために、1 つの新しい接続に対して中間者攻撃を仕掛けるだけで済みます。

キーペアに何らかの内部番号が付けられている可能性はありますが、これは完全に恣意的であり、頼りにするのは賢明ではありません。キーペア内のキーには何も共有されていないため、秘密キーと公開キーを結び付ける内部プロパティは保証されていません。ただし、(願わくば) 1 つのキーがもう 1 つのキーの動作を元に戻せる唯一のエンティティであるという点だけは例外です。

いいえ、クライアントが特定のサーバーで使用する適切な秘密鍵を選択するための最善の方法は、鍵の選択を支援する一致する公開鍵を持つことです。

答え2

keychainヘルパーとなっているプログラムよりも安全にしようとしていると思います( ssh)。

ssh-agent現在の OpenSSH バージョンでは、公開鍵ファイルがなくても に秘密鍵を追加できますssh-add。これを実行すると、成功したかどうかを確認できますssh-add -l。 では、秘密鍵ファイル名も一覧表示されますssh。 は、複数の ID が使用可能な場合でも、キャッシュされたキーを使用して接続します。それらを順番に試すことは、ドキュメントに明示的に記載されています。

$ ssh -V
OpenSSH_7.2p2, OpenSSL 1.0.2g  1 Mar 2016
$ man ssh_config
...
     IdentityFile
      ...
             It is possible to have multiple identity files speci‐
             fied in configuration files; all these identities
             will be tried in sequence.  Multiple IdentityFile
             directives will add to the list of identities tried
             (this behaviour differs from that of other configura‐
             tion directives).
      ...

AddKeysToAgentのオプションを使うのがベストだと思います。利用可能sshな場合、セッションの最初の1回のみパスフレーズが求められますssh-agent.bashrceval $(keychain --eval --noask)

関連情報