2012-05-08 14:22:34 +0000 2012-05-08 14:22:34 +0000
147
147

Wat is een SSH-key fingerprint en hoe wordt deze gegenereerd?

Ik vind altijd dat ik dit bericht krijg als ik ssh in een nieuwe machine:

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

Waar staat het voor? Zal elke machine elke keer dezelfde vingerafdruk hebben?

Hoe worden deze vingerafdrukken gegenereerd? Van welke parameters zijn ze afhankelijk?

Antwoorden (5)

128
128
128
2012-07-24 16:26:09 +0000

U kunt een vingerafdruk genereren voor een publieke sleutel met behulp van ssh-keygen zoals:

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

Concreet voorbeeld (als u een RSA publieke sleutel gebruikt):

$ 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)

Het eerste deel (2048) is de sleutellengte in bits, het tweede deel (00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff) is de vingerafdruk van de publieke sleutel en het derde deel is de locatie van het publieke sleutelbestand zelf.

In nieuwere versies van OpenSSH wordt Base64 gecodeerd SHA-256 getoond in plaats van hexadecimaal MD5. Om de hash in legacystijl te tonen, gebruik je

$ ssh-keygen -l -E md5 -f ~/.ssh/id_rsa.pub
74
74
74
2014-02-08 20:40:35 +0000

De vingerafdruk is de MD5 over de binaire gegevens binnen de Base64 gecodeerde openbare sleutel.

$ 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

De md5sum 6530389635564f6464e8e3a47d593e19 is de vingerafdruk die wordt weergegeven wanneer de sleutel wordt gegenereerd, alleen zonder de scheidingstekens.

  • *

Als u echter te maken heeft met de vingerafdrukken die Amazon laat zien in de EC2 Key Pairs console helaas kan dat een ander beest zijn . Als het een 32-cijferige hex-string is, is het de standaard MD5 SSH openbare sleutel vingerafdruk hierboven. Maar als het 40 hexadecimale cijfers zijn, is het eigenlijk een vingerafdruk die wordt berekend door de SHA1 van de privé sleutel in PKCS#8 formaat te nemen:

$ 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
69
69
69
2012-05-08 14:41:50 +0000

De vingerafdruk is gebaseerd op de publieke sleutel van de gastheer, meestal gebaseerd op “/etc/ssh/ssh_host_rsa_key.pub” Over het algemeen is het voor eenvoudige identificatie/verificatie van de gastheer waarmee u verbinding maakt.

Als de vingerafdruk verandert, heeft de machine waarmee u verbinding maakt hun publieke sleutel veranderd. Dit is misschien niet slecht (gebeurt door het herinstalleren van ssh), maar het kan ook aangeven dat je verbinding maakt met een andere machine op hetzelfde domein/IP (gebeurt als je verbinding maakt via iets als loadbalancer) of dat je het doelwit bent van een man-in-the-middle aanval, waarbij de aanvaller op de een of andere manier je ssh-verbinding onderschept/omleidt om verbinding te maken met een andere host die je gebruiker/pw zou kunnen besluipen.

*Grondslag: *Als u wordt gewaarschuwd voor een gewijzigde vingerafdruk, wees dan voorzichtig en controleer of u daadwerkelijk verbinding maakt met de juiste host via een beveiligde verbinding. Hoewel dit meestal onschadelijk is, kan het een indicatie zijn van een potentieel probleem

Zie: http://www.lysium.de/blog/index.php?/archives/186-How-to-get-ssh-server-fingerprint-information.html ](http://www.lysium.de/blog/index.php?/archives/186-How-to-get-ssh-server-fingerprint-information.html) en: http://en.wikipedia.org/wiki/Public ] (http://en.wikipedia.org/wiki/Public_key_fingerprint)…

23
23
23
2019-03-29 21:52:44 +0000

Als u een SSH-sleutelbestand wilt controleren om te zien of het hetzelfde is als wat gerapporteerd wordt als de “Deploy key” door de github, dan is dit voor u…

Vanaf de private URL: https://github.com///<repo_name>/settings/toetsen ziet u

Bij de terminal:

$ ls -l id*
-rw------- 1 bruno staff 1675 Mar 29 17:03 id_rsa
-rw-r--r-- 1 bruno staff 416 Mar 29 17:03 id_rsa.pub

$ ssh-keygen -E md5 -lf id_rsa
2048 MD5:07:b4:00:a4:65:ef:44:89:05:84:60:0c:c9:b2:36:5e ec2-user@ip-10-2-1-16.ec2.internal (RSA)

$ ssh-keygen -E md5 -lf id_rsa.pub
2048 MD5:07:b4:00:a4:65:ef:44:89:05:84:60:0c:c9:b2:36:5e ec2-user@ip-10-2-1-16.ec2.internal (RSA)

U zult merken dat u dezelfde vingerafdruk krijgt voor zowel de private als de publieke sleutels.

Datzelfde commando kan worden gecombineerd met een nette functie van GitHub, namelijk het feit dat ze de publieke SSH-sleutels van gebruikers openbaar bedienen op https://github.com/.keys

Hier is een one-liner die je kunt gebruiken om er gebruik van te maken.

$ curl -sL https://github.com/RichardBronosky.keys | while read; do echo -e "\nkey #$((++i)):"; ssh-keygen -E md5 -lf - <<<"$REPLY"; echo $REPLY; done

key #1:
2048 MD5:07:b4:00:a4:65:ef:44:89:05:84:60:0c:c9:b2:36:5e no comment (RSA)
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJGT35gvsFveu+80qgurrLHId0h55E9jliM7Fo0mV9b7eg3EfyagkAcJUSMFkoov3HY4CW0yzOc7WlN57ABwvpRz1ioFDex0n0FkjoSEs5ROeT1OneRK6Bf6XnplgPuQ/LSSkv3kmK6I29R+YWi6TjDvLLoA5BrXJjOMfUv36jxWCDtk/5ZdhMZqhsMuDm06Jg5JBu6n5jQaZkmaIaunz7vOfwVG9LoCI+MYyIdo2S4VTva7Ee7jfAvgSUUgHTjhzsPO0/Ww5a/Kz2ehXW27aJxj/QPLfYR2LmTMbQKm3WpB8P1LjoiU7zjPoVoZ43a4P2JLUDidGKCd3eY5b5xewz

key #2:
2048 MD5:f7:98:f1:0b:73:c6:2a:21:00:7a:70:1d:0f:cf:d8:cc no comment (RSA)
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCQsZrjwKjB4WnE4SwVdDX5eEMxKzPHFBVKKpo9vvWUXRQwdTZy6iVOkyF26IPR+xDPzslzXOClKXUrWEh6La/EMpRwuMrWAbMIJFeDHOb56q4azgopoJmMJHo0yxGu0Ts4XszMACYRhlG6uK2AP5SYiOTp1zKPFjazXAdwLXyOvJurzy6KKuGJdSs/sj9+4uehgyRNOhehCSfg71tJJYwRvO2DDfLgaVEKOgZx58gEnJfhhz9D7rbvdZNhw/hCgtVNJaQF9Mdke2OPwWSo8i0/XNb9Bu/GRXqwMZrxDBhyzieocW40cwuzxWfzoi03aISdtQ1HtawH8+/sswviM1+B
1
1
1
2017-11-26 04:32:06 +0000
ssh-keygen -r host.name.com

Uitvoeren van de vingerafdrukken voor alle geconfigureerde openbare sleutels op een sshd instance.

Deze kunnen dan in DNS SSHFP -records worden gezet.