¿Cuál es el SHA256 que viene en la entrada sshd en auth.log?

19

Al iniciar sesión a través de ssh, se puede ver lo siguiente en 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...

He estado tratando de averiguar cuál es esta información SHA256, pero no pude encontrar nada que parezca coincidir. Primero pensé que podría ser alguna información del cliente (clave pública, huella digital, nombre de host hash, etc.) desde la que me estoy conectando, pero no encontré nada que confirmar, ni en el lado del servidor.

La información más cercana que he encontrado está aquí , pero no entendí cuando dice "Y aquí hay un ejemplo usando una clave para la autenticación. Muestra la huella dactilar clave (un error ortográfico, probablemente) como un hash SHA256 en base64". , ya que no he encontrado una huella digital clave correspondiente de ningún tipo.

Gracias.

Márcio Jales
fuente

Respuestas:

27

Este es el SHA256hash para la clave pública RSA que se utilizó para autenticar la sesión SSH.

Así es como se verifica:

ssh-keygen -lf .ssh/id_rsa.pub

O, para verificar sin ssh-keygen:

  • Eliminar el ssh-rsaprefijo
  • Decodifica la clave en bytes usando base64
  • Obtenga el SHA256hash para la clave (como bytes, no hexadecimal)
  • Codifique los bytes usando base64

Por ejemplo:

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
fuente
11
Resulta que puedes usarssh-keygen -lf .ssh/id_rsa.pub
Joshua Griffiths
2
Creo que su comentario es una respuesta mejor y completa, que debe agregar por separado.
Hugh W
1
+1 a agregar ssh-keygen -lf .ssh/id_rsa.pubcomo respuesta separada. Es mejor que la codificación manual.
Ilya Bobyr el
2

Tenía la misma pregunta en macOS 10.13.6, donde su respuesta solo necesitaba un par de ajustes:

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

Muchas gracias.

stoutyhk
fuente