web-dev-qa-db-ja.com

SSH公開鍵ファイルの最後のユーザー/ホストはどのような意味を持っていますか?

ssh-keygenによって生成されたSSH公開鍵ファイルの最後にユーザーとホストがある理由がわかりません。

例:id_rsa.pub

ssh-rsa ... rest of file ... /CA9gyE8HRhNMG6ZDwyhPBbDfX root@mydomain

ファイルの最後のroot@mydomainに注意してください。

ユーザーのどこでも公開鍵を使用して秘密鍵を使用して認証できる場合、root @ mydomainは認証プロセスにどのような意味がありますか?

それとも、それが誰によって発行されたかを理解するための単なるプレースホルダーですか?

84
Basil A

このフィールドはコメントであり、自由に変更または無視できます。デフォルトでは_user@Host_によって_ssh-keygen_に設定されています。

OpenSSH sshd(8) manページ は、公開鍵の形式を次のように説明しています。

公開鍵は、スペースで区切られた次のフィールドで構成されています:オプション、keytype、base64でエンコードされた鍵、コメント。 。 。 。コメントフィールドは何にも使用されません(ただし、ユーザーがキーを識別するのに便利な場合があります)。

ssh-keygen(1) manページ はこう言っています:

キーのコメントは、キーの識別に役立つ場合があります。コメントはキーの作成時に「user @ Host」に初期化されますが、-cオプションを使用して変更できます。

118
Michael Hampton

これは、承認済みキーに関するセクションの sshd(8) のマニュアルページで簡単に説明されています。

プロトコル2の公開鍵は、optionskeytypeで構成されていますbase64でエンコードされたキーcomment

承認されたキーのopensshコンテキストでは、コメントの意味のみがあります。しかし、この部分に意味を与えるSSH実装があります。たとえば、LANCOMモデムでのSSH実装は、このコメントをキーが有効なユーザー名として使用しています。

54
Jakuje

他の人が指摘したように、それはyoがどのキーがどれであるかを識別できるようにするコメントです。

たとえばid_rsa.pubで単一のキーを見ても、それほど大きな違いはありませんが、authorized_keysファイルにあるものなど、潜在的に長いキーのリストを見ると、どのキーがどれであるかを簡単に識別できるので非常に役立ちます。

また、ssh-keygenのデフォルトはuser@hostnameです。これは、一般的なユースケースでは、どのキーかを示す明確な識別子です(user@domainはそうではありません)。

17

とても、とてもシンプルです。私とあなたは機械を使っている人間です。投稿したこの例を見てください。

ssh-rsa [piles of gobbledygook]…CA9gyE8HRhNMG6ZDwyhPBbDfX root@mydomain

マシンはこれを読み取ることができます:

ssh-rsa [piles of gobbledygook]…CA9gyE8HRhNMG6ZDwyhPBbDfX

人間はこのコメントを読むことができます:

root@mydomain

人々は物事がlookコンピュータシステムでは複雑であるとしても、実際にはtonsコードが設計されている場合はより複雑になる可能性があることを忘れがちですonly forマシンの消費。あいまいなマルウェアのコードを見てください。デコードしてフォーマットすると、人間が読める形式になります。しかし、人間が読みにくくするために、誰かが邪魔をする必要がありました。

デフォルトではallコンピュータシステムのコーディングおよび構成ファイルのタイプは、人間が使用するための構造です。なぜなら、私たちは機械を使用している人間であり、機械は次のようなものを必要としないからです。

  • コメント。
  • インデント。
  • 人間が読める言語で書かれた変数と関数。

だからコメントはあなたと私と他の誰ものためのものではありません。ほとんどの場合、コメントなしで機能します。しかし、午前3時に何かが機能せず、適切な公開鍵を探しているときに、コメントがあることを願い、夢を見て、祈ります。

5
JakeGould