SSHエージェントは、キーに使用する名前をどこで取得しますか?

SSHエージェントは、キーに使用する名前をどこで取得しますか?

SSHエージェントが使用しているキーをどのように参照するのかわかりません。

次のコメントを含む4つのSSHキーがあります。

$ tail -n +1 *.pub
==> github_id_ed25519.pub <==
ssh-ed25519 ... mygithubusername@myhost

==> id_ecdsa.pub <==
ecdsa-sha2-nistp521 ... me@myhost

==> id_ed25519.pub <==
ssh-ed25519 ... me@myhost

==> id_rsa.pub <==
ssh-rsa ... me@myhost

SSHエージェントに次のキーを追加しました(確認-cオプションを使用)。

$ ssh-add -c github_id_ed25519 id_ecdsa id_ed25519 id_rsa
Enter passphrase for github_id_ed25519 (will confirm each use): 
Identity added: github_id_ed25519 (mygithubusername)
The user must confirm each use of the key
Identity added: id_ecdsa (id_ecdsa)
The user must confirm each use of the key
Identity added: id_ed25519 (me@myhost)
The user must confirm each use of the key
Identity added: id_rsa (id_rsa)
The user must confirm each use of the key

追加されたすべてのキーを一覧表示しました。

$ ssh-add -l
256  SHA256:... mygithubusername (ED25519)
521  SHA256:... id_ecdsa (ECDSA)
256  SHA256:... me@myhost (ED25519)
4096 SHA256:... id_rsa (RSA)

SSHエージェントは、キーを参照するために使用される名前をどこで取得しますか?

次を使用しているようです:

  1. キーファイルの完全な説明(1つのキーについて)
  2. キーファイルのコメントの一部(キー用)
  3. キーファイルのファイル名(両方のキー)

これを理解するのは難しいです。キーのファイル名を使用するのが最も簡単ですが、今はめちゃくちゃです。現在、SSHを使用してログインして確認ダイアログを受信するたびに、実際にどのキーを使用しようとしているのかを把握するのは困難です。

答え1

ssh-add秘密鍵ファイルの説明を読んでください。失敗した場合は、追加のプロンプトの説明としてファイル名を使用します。

~からSSH-add.c:ファイルを追加():

if (comment == NULL || *comment == '\0')
    comment = xstrdup(filename);

ファイル名をコメントとして使用するIDには、手動で編集しても、キーと一緒に元に保存されたコメントがないと思われます。人々鍵ファイルは後で作成されます。マニュアルssh-keygenページには、コメントを変更または追加できないことが記載されています。プライベート廃止予定のキー形式のキーファイル:

 -c      Requests changing the comment in the private and public key files.  This
         operation is only supported for RSA1 keys.

関連情報