auth.logのsshdエントリにあるSHA256とは何ですか?


19

ssh経由でログインすると、auth.logに次のように表示されます。

Dec 14 16:29:30 app sshd[22781]: Accepted publickey for dev from XXX.XXX.XX.XXX port XXXXX ssh2: RSA SHA256:pO8i...

私はこのSHA256情報が何であるかを理解しようとしましたが、一致するように見えるものを見つけることができませんでした。まず、接続元のクライアントからの情報(公開鍵、指紋、ハッシュ化されたホスト名など)の可能性があると思いましたが、サーバー側でも確認するものが見つかりませんでした。

私が見つけた最も近い情報はここにありますが、「これは認証にキーを使用する例です。これは、base64のSHA256ハッシュとしてkewy(スペルミスの可能性が高い)フィンガープリントを示しています。」 、対応するキーフィンガープリントが見つからないため。

ありがとうございました。

回答:


27

これは、SHA256SSHセッションの認証に使用されたRSA公開鍵のハッシュです。

これを確認する方法は次のとおりです。

ssh-keygen -lf .ssh/id_rsa.pub

または、なしで確認するにはssh-keygen

  • ssh-rsa接頭辞を削除
  • を使用してキーをバイトにデコードします base64
  • SHA256キーのハッシュを取得します(16進数ではなくバイトとして)
  • を使用してバイトをエンコードする base64

例えば:

cat .ssh/id_rsa.pub    |
    awk '{ print $2 }' | # Only the actual key data without prefix or comments
    base64 -d          | # decode as base64
    sha256sum          | # SHA256 hash (returns hex)
    awk '{ print $1 }' | # only the hex data
    xxd -r -p          | # hex to bytes
    base64               # encode as base64

11
使用できることが判明ssh-keygen -lf .ssh/id_rsa.pub
ジョシュアグリフィス

2
あなたのコメントは、あなたが個別に追加する必要がある、別の万能な回答だと思います。
ヒューW

1
+1をssh-keygen -lf .ssh/id_rsa.pub個別の回答として追加します。手動エンコーディングよりも優れています。
Ilya Bobyr

2

macOS 10.13.6でも同じ質問がありましたが、あなたの答えはいくつかの調整が必要でした:

cat .ssh/id_rsa.pub    |
    awk '{ print $2 }' | # Only the actual key data without prefix or comments
    base64 -D          | # decode as base64
    shasum -a 256      | # SHA256 hash (returns hex)
    awk '{ print $1 }' | # only the hex data
    xxd -r -p          | # hex to bytes
    base64               # encode as base64

感謝します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.