web-dev-qa-db-ja.com

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

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

私が見つけた最も近い情報は here ですが、「ここに認証用のキーを使用した例があります。それは、次のようにkewy(スペルミス、おそらく)指紋を示しています。 base64のSHA256ハッシュ。対応するキーフィンガープリントが何も見つからなかったため。

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

19
Márcio Jales

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

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

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
27

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

感謝します。

2
stoutyhk