Co to jest SHA256, który pojawia się we wpisie sshd w auth.log?

20

Podczas logowania przez ssh na auth.log można zobaczyć:

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

Próbowałem dowiedzieć się, co to za informacje SHA256, ale nie mogłem znaleźć niczego, co wydaje się pasować. Najpierw pomyślałem, że mogą to być jakieś informacje od klienta (klucz publiczny, odcisk palca, zaszyfrowana nazwa hosta itp.) Łączę się, ale nie znalazłem niczego do potwierdzenia, ani po stronie serwera.

Najbliższe informacje, które znalazłem, są tutaj , ale nie zrozumiałem, kiedy mówi: „Oto przykład użycia klucza do uwierzytelnienia. Pokazuje on niewyraźny (prawdopodobnie błędny) odcisk palca jako skrót SHA256 w standardzie base64”. , ponieważ nie znalazłem żadnego odpowiedniego odcisku palca klucza.

Dziękuję Ci.

Márcio Jales
źródło

Odpowiedzi:

27

Jest to SHA256skrót klucza publicznego RSA, który został użyty do uwierzytelnienia sesji SSH.

Oto jak to zweryfikować:

ssh-keygen -lf .ssh/id_rsa.pub

Lub w celu weryfikacji bez ssh-keygen:

  • Usuń ssh-rsaprefiks
  • Dekoduj klucz do bajtów za pomocą base64
  • Uzyskaj SHA256skrót dla klucza (jako bajty, a nie hex)
  • Zakoduj bajty za pomocą base64

Na przykład:

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
źródło
11
Okazuje się, że możesz użyćssh-keygen -lf .ssh/id_rsa.pub
Joshua Griffiths
2
Myślę, że twój komentarz jest osobną i ogólnie lepszą odpowiedzią, którą powinieneś dodać osobno.
Hugh W
1
+1 do dodania ssh-keygen -lf .ssh/id_rsa.pubjako osobnej odpowiedzi. Lepiej niż kodowanie ręczne.
Ilya Bobyr
2

Miałem to samo pytanie w systemie macOS 10.13.6, gdzie twoja odpowiedź wymagała tylko kilku poprawek:

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

Dzięki bardzo.

stoutyhk
źródło