Що таке SHA256, що входить у запис sshd в auth.log?


20

Під час входу через 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, але я не зміг знайти нічого, що, здається, відповідає. Спершу я подумав, що це може бути якась інформація від клієнта (відкритий ключ, відбиток пальців, хешоване ім'я хоста тощо), з якого я підключаюся, але я не знайшов нічого для підтвердження, ні на стороні сервера.

Найближча інформація, яку я знайшов, є тут , але я не зрозумів, коли вона говорить "І ось приклад використання ключа для автентифікації. Він показує kewy (неправильно написане, мабуть) відбиток пальця як хеш SHA256 в base64". , оскільки я не знайшов відповідного відбитка ключа будь-якого типу.

Дякую.

Відповіді:


27

Це SHA256хеш для відкритого ключа RSA, який використовувався для аутентифікації сеансу SSH.

Ось як це підтвердити:

ssh-keygen -lf .ssh/id_rsa.pub

Або для підтвердження без ssh-keygen:

  • Видаліть ssh-rsaпрефікс
  • Розшифруйте ключ за допомогою байтів base64
  • Отримайте SHA256хеш для ключа (як байти, а не шістнадцятковий)
  • Кодуйте байти за допомогою 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

11
Виявляється, можна скористатисяssh-keygen -lf .ssh/id_rsa.pub
Джошуа Гриффітс

2
Я вважаю, що ваш коментар - це окрема, всебічна краща відповідь, яку слід додати окремо.
Х'ю Ш

1
+1, щоб додати ssh-keygen -lf .ssh/id_rsa.pubяк окрему відповідь. Краще, ніж ручне кодування.
Ілля Бобир

2

Так само було питання і в 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

Велике спасибі

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.