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

20

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é qu'il pourrait s'agir d'informations provenant 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.

Márcio Jales
la source

Réponses:

27

Il s'agit du SHA256hachage de 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:

  • Supprimer le ssh-rsapréfixe
  • Décode la clé en octets en utilisant base64
  • Récupère le SHA256hachage de la clé (en octets, pas en hexadécimal)
  • 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
Joshua Griffiths
la source
11
Il s'avère que vous pouvez utiliserssh-keygen -lf .ssh/id_rsa.pub
Joshua Griffiths
2
Je pense que votre commentaire est une meilleure réponse distincte et globale, que vous devriez ajouter séparément.
Hugh W
1
+1 à l'ajout ssh-keygen -lf .ssh/id_rsa.pubcomme réponse distincte. Il vaut mieux que l'encodage manuel.
Ilya Bobyr
2

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.

stoutyhk
la source