Was ist ein SSH-Schlüssel-Fingerabdruck und wie wird er generiert?

Ich finde immer, dass ich diese Nachricht erhalte, wenn ich ssh in eine neue Maschine einfüge:

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

Wofür steht es? Wird jede Maschine jedes Mal den gleichen Fingerabdruck haben?

Wie werden diese Fingerabdrücke erzeugt? Von welchen Parametern hängen sie ab?

 201
ssh
Author: Der Hochstapler, 2012-05-08

6 answers

Der Fingerabdruck basiert auf dem öffentlichen Schlüssel des Hosts, normalerweise basierend auf " /etc/ssh / ssh_host_rsa_key.Pub" Im Allgemeinen dient es zur einfachen Identifizierung / Überprüfung des Hosts, mit dem Sie eine Verbindung herstellen.

Wenn sich der Fingerabdruck ändert, hat der Computer, mit dem Sie eine Verbindung herstellen, seinen öffentlichen Schlüssel geändert. Dies ist möglicherweise keine schlechte Sache(geschieht durch erneute Installation von ssh), kann aber auch darauf hinweisen, dass Sie eine Verbindung zu einem anderen Computer mit derselben Domäne/IP herstellen(geschieht, wenn Sie eine Verbindung herstellen so etwas wie Load Balancer) oder dass Sie mit einem Man-in-the-Middle-Angriff angegriffen werden, bei dem der Angreifer Ihre SSH-Verbindung irgendwie abfängt/umleitet, um eine Verbindung zu einem anderen Host herzustellen, der Ihren Benutzer/pw schnüffeln könnte.

Fazit: Wenn Sie vor einem geänderten Fingerabdruck gewarnt werden, seien Sie vorsichtig und überprüfen Sie, ob Sie tatsächlich über eine sichere Verbindung eine Verbindung zum richtigen Host herstellen. Obwohl dies meistens harmlos ist, kann es ein Hinweis auf eine mögliches Problem

Siehe: http://www.lysium.de/blog/index.php?/archives/186-How-to-get-ssh-server-fingerprint-information.html
und: http://en.wikipedia.org/wiki/Public_key_fingerprint

 90
Author: madmaze,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-08-05 00:04:10

Sie können einen Fingerabdruck für einen öffentlichen Schlüssel mit ssh-keygen wie folgt generieren:

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

Konkretes Beispiel (wenn Sie einen öffentlichen RSA-Schlüssel verwenden):

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

Der erste Teil (2048) ist die Schlüssellänge in Bits, der zweite Teil (00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff) ist der Fingerabdruck des öffentlichen Schlüssels und der dritte Teil ist der Speicherort der öffentlichen Schlüsseldatei selbst.

In neueren Versionen von OpenSSH wird Base64-codiertes SHA-256 anstelle von hexadezimalem MD5 angezeigt. Verwenden Sie{[7], um den Legacy-Stil-Hash anzuzeigen]}

$ ssh-keygen -l -E md5 -f ~/.ssh/id_rsa.pub
 192
Author: Benjamin Oakes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-12-03 11:34:49

Der Fingerabdruck ist das MD5 über die Binärdaten innerhalb des Base64-codierten öffentlichen Schlüssels.

$ 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

Die md5sum 6530389635564f6464e8e3a47d593e19 ist die fingerprint angezeigt, wenn der Schlüssel wird nur ohne die trennenden Doppelpunkte generiert.


Wenn Sie sich jedoch mit den Fingerabdrücken befassen, die Amazon in der EC2-Schlüsselpaarkonsole anzeigt, leider kann das ein anderes Tier sein. Wenn es sich um eine 32-stellige Hex-Zeichenfolge handelt, handelt es sich um den öffentlichen MD5-SSH - Standardschlüssel. oben. Wenn es sich jedoch um 40 Hex-Ziffern handelt, handelt es sich tatsächlich um einen Fingerabdruck, der mit dem SHA1 des privaten Schlüssels im PKCS#8-Format berechnet wird:

$ 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
 80
Author: andrew.n,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-01-14 01:15:50

Wenn Sie eine SSH-Schlüsseldatei überprüfen möchten, um festzustellen, ob sie mit dem übereinstimmt, was von github als "Bereitstellungsschlüssel" gemeldet wird, ist dies für Sie...

Aus dem privaten URL: https://github.com///settings/keys, die Sie sehen screenshot von github

Am 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 [email protected] (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 [email protected] (RSA)

Sie werden feststellen, dass Sie sowohl für den privaten als auch für den öffentlichen Schlüssel denselben Fingerabdruck erhalten.

Derselbe Befehl kann mit einer netten Funktion von GitHub kombiniert werden, was die Tatsache ist, dass sie öffentliche SSH-Schlüssel der Benutzer öffentlich bereitstellen unter https://github.com/. keys

Hier ist ein Einzeiler, mit dem Sie ihn nutzen können.

$ 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
 29
Author: Bruno Bronosky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-07-11 03:54:04
ssh-keygen -r host.name.com

Gibt die Fingerabdrücke für alle konfigurierten öffentlichen Schlüssel auf einer sshd-Instanz aus.

Diese können dann in DNS SSHFP Datensätze eingefügt werden.

 2
Author: Mike Schroll,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-11-26 04:32:06

Um den auf Azure Devops vorhandenen Fingerabdruck zu überprüfen, können Sie

$ 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)
 0
Author: Obi Wan - PallavJha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-07-06 11:49:51