web-dev-qa-db-fra.com

Quel est le SHA256 qui vient sur l'entrée sshd dans auth.log?

Lorsque vous vous connectez via ssh, vous pouvez voir ce qui suit sur 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...

J'ai essayé de comprendre ce que sont ces informations SHA256, mais je n'ai rien trouvé qui semble correspondre. J'ai d'abord pensé que cela pourrait être des informations du client (clé publique, empreinte digitale, nom d'hôte haché, etc.) à partir desquelles je me connecte, mais je n'ai rien trouvé à confirmer, ni côté serveur.

L'information la plus proche que j'ai trouvée est ici , mais je n'ai pas compris quand elle dit "Et voici un exemple utilisant une clé pour l'authentification. Il montre l'empreinte digitale kewy (une faute d'orthographe, probablement) comme un hachage SHA256 en base64. ", car je n'ai trouvé aucune empreinte digitale correspondante.

Je vous remercie.

19
Márcio Jales

C'est le SHA256 hachage pour la clé publique RSA qui a été utilisée pour authentifier la session SSH.

Voici comment le vérifier:

ssh-keygen -lf .ssh/id_rsa.pub

Ou, pour vérifier sans ssh-keygen:

  • Retirer le ssh-rsa préfixe
  • Décode la clé en octets en utilisant base64
  • Obtenir le SHA256 hash pour la clé (en octets, pas hex)
  • Encode les octets en utilisant base64

Par exemple:

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
Joshua Griffiths

Eu la même question sur macOS 10.13.6, où votre réponse avait juste besoin de quelques ajustements:

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

Merci beaucoup.

2
stoutyhk