Что такое отпечаток ключа SSH и как он генерируется?

Что такое отпечаток ключа SSH и как он генерируется?

sshЯ всегда замечаю, что, когда беру новую машину, получаю следующее сообщение :

12:f8:7e:78:61:b4:bf:e2:de:24:15:96:4e:d4:72:53

Что это значит? Будет ли у каждой машины каждый раз один и тот же отпечаток пальца?

Как генерируются эти отпечатки пальцев? От каких параметров они зависят?

решение1

Отпечаток пальца основан на открытом ключе хоста, обычно на файле /etc/ssh/ssh_host_rsa_key.pub. Обычно это для легкой идентификации/проверки хоста, к которому вы подключаетесь.

Если отпечаток пальца изменился, машина, к которой вы подключаетесь, сменила свой открытый ключ. Это может быть не так уж и плохо (это происходит из-за переустановки ssh), но это также может означать, что вы подключаетесь к другой машине в том же домене/IP (это происходит, когда вы подключаетесь через что-то вроде балансировщика нагрузки) или что вы стали целью атаки типа «человек посередине», когда злоумышленник каким-то образом перехватывает/перенаправляет ваше ssh-подключение для подключения к другому хосту, который может шпионить за вашим именем пользователя/паролем.

Нижняя граница:Если вы получили предупреждение об изменении отпечатка пальца, будьте осторожны и дважды проверьте, что вы действительно подключаетесь к правильному хосту через безопасное соединение. Хотя в большинстве случаев это безвредно, это может быть признаком потенциальной проблемы.

Видеть:http://www.lysium.de/blog/index.php?/archives/186-How-to-get-ssh-server-fingerprint-information.html
и:http://en.wikipedia.org/wiki/Отпечаток_отпечатка_пальца_публичного_ключа

решение2

Вы можете сгенерировать отпечаток для открытого ключа следующим ssh-keygenобразом:

ssh-keygen -lf /path/to/key.pub

Конкретный пример (если вы используете открытый ключ RSA):

$ ssh-keygen -lf ~/.ssh/id_rsa.pub
2048 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff /Users/username/.ssh/id_rsa.pub (RSA)

Первая часть (2048)— это длина ключа в битах, вторая часть (00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff)— отпечаток открытого ключа, а третья часть — местоположение самого файла открытого ключа.

В новых версиях OpenSSH вместо шестнадцатеричного MD5 отображается SHA-256 в кодировке Base64. Чтобы показать хэш в устаревшем стиле, используйте

$ ssh-keygen -l -E md5 -f ~/.ssh/id_rsa.pub

решение3

Отпечаток представляет собой MD5 двоичных данных в открытом ключе, закодированном в Base64.

$ ssh-keygen -f foo
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in foo.
Your public key has been saved in foo.pub.
The key fingerprint is:
65:30:38:96:35:56:4f:64:64:e8:e3:a4:7d:59:3e:19 andrew@localhost
The key's randomart image is:
+--[ RSA 2048]----+
|       +*..+*    |
|      =. +.=     |
|     . . .o .    |
|         o+   E  |
|        S= . + o |
|        . o o +  |
|           .   . |
|                 |
|                 |
+-----------------+
$ cat foo.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEbKq5U57fhzQ3SBbs3NVmgY2ouYZfPhc6cXBNEFpRT3T100fnbkYw+EHi76nwsp+uGxk08kh4GG881DrgotptrJj2dJxXpWp/SFdVu5S9fFU6l6dCTC9IBYYCCV8PvXbBZ3oDZyyyJT7/vXSaUdbk3x9MeNlYrgItm2KY6MdHYEg8R994Sspn1sE4Ydey5DfG/WNWVrzFCI0sWI3yj4zuCcUXFz9sEG8fIYikD9rNuohiMenWjkj6oLTwZGVW2q4wRL0051XBkmfnPD/H6gqOML9MbZQ8D6/+az0yF9oD61SkifhBNBRRNaIab/Np7XD61siR8zNMG/vCKjFGICnp andrew@localhost
$ echo 'AAAAB3NzaC1yc2EAAAADAQABAAABAQDEbKq5U57fhzQ3SBbs3NVmgY2ouYZfPhc6cXBNEFpRT3T100fnbkYw+EHi76nwsp+uGxk08kh4GG881DrgotptrJj2dJxXpWp/SFdVu5S9fFU6l6dCTC9IBYYCCV8PvXbBZ3oDZyyyJT7/vXSaUdbk3x9MeNlYrgItm2KY6MdHYEg8R994Sspn1sE4Ydey5DfG/WNWVrzFCI0sWI3yj4zuCcUXFz9sEG8fIYikD9rNuohiMenWjkj6oLTwZGVW2q4wRL0051XBkmfnPD/H6gqOML9MbZQ8D6/+az0yF9oD61SkifhBNBRRNaIab/Np7XD61siR8zNMG/vCKjFGICnp' \
    | base64 -D | md5
6530389635564f6464e8e3a47d593e19

Сумма md5 6530389635564f6464e8e3a47d593e19 — это отпечаток пальца, отображаемый при генерации ключа, только без разделительных двоеточий.


Однако если вы имеете дело с отпечатками пальцев, которые Amazon показывает в консоли EC2 Key Pairs, к сожалению, это может быть другой зверь. Если это 32-значная шестнадцатеричная строка, это стандартный отпечаток открытого ключа MD5 SSH, указанный выше. Но если это 40 шестнадцатеричных цифр, это фактически отпечаток, вычисленный путем взятия SHA1 иззакрытый ключв формате PKCS#8:

$ openssl pkcs8 -in foo -nocrypt -topk8 -outform DER | openssl sha1 -c
e2:77:39:d3:53:a7:62:68:5f:da:82:0e:99:61:30:64:a2:88:c4:58

решение4

Для проверки отпечатка, присутствующего в Azure Devops, вы можете использовать

$ ssh-keygen -E md5 -lf .ssh/id_rsa.pub
2048 MD5:ba:42:24:87:d6:7b:71:a2:3e:b5:9a:31:b2:2c:e0:00 CrazyGirrafe@Australasia (RSA)

Связанный контент