it-swarm.com.de

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

Ich stelle immer fest, dass ich diese Meldung erhalte, wenn ich ssh auf eine neue Maschine __e:

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

Für was steht das? Hat jede Maschine jedes Mal den gleichen Fingerabdruck?

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

109
Kit Ho

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

Wenn sich der Fingerabdruck ändert, hat der Computer, zu dem Sie eine Verbindung herstellen, seinen öffentlichen Schlüssel geändert. Dies ist möglicherweise keine schlechte Sache (wenn Sie ssh neu installieren), kann jedoch auch darauf hinweisen, dass Sie eine Verbindung zu einem anderen Computer mit derselben Domäne/IP herstellen (wenn Sie eine Verbindung über einen Load Balancer herstellen) oder dass Sie dies tun werden mit einem Man-in-the-Middle-Angriff angegriffen, bei dem der Angreifer irgendwie Ihre SSH-Verbindung abfängt/umleitet, um eine Verbindung zu einem anderen Host herzustellen, der Ihren Benutzer/pw beschnü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 die meiste Zeit harmlos ist, kann es ein Hinweis auf ein potenzielles Problem sein

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

57
madmaze

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 Bit, 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.

88
Benjamin Oakes

Der Fingerabdruck ist der MD5 über den 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 [email protected]
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 [email protected]
$ echo 'AAAAB3NzaC1yc2EAAAADAQABAAABAQDEbKq5U57fhzQ3SBbs3NVmgY2ouYZfPhc6cXBNEFpRT3T100fnbkYw+EHi76nwsp+uGxk08kh4GG881DrgotptrJj2dJxXpWp/SFdVu5S9fFU6l6dCTC9IBYYCCV8PvXbBZ3oDZyyyJT7/vXSaUdbk3x9MeNlYrgItm2KY6MdHYEg8R994Sspn1sE4Ydey5DfG/WNWVrzFCI0sWI3yj4zuCcUXFz9sEG8fIYikD9rNuohiMenWjkj6oLTwZGVW2q4wRL0051XBkmfnPD/H6gqOML9MbZQ8D6/+az0yF9oD61SkifhBNBRRNaIab/Np7XD61siR8zNMG/vCKjFGICnp' \
    | base64 -D | md5
6530389635564f6464e8e3a47d593e19

Bei der md5sum 6530389635564f6464e8e3a47d593e19 handelt es sich um den Fingerabdruck, der beim Generieren des Schlüssels nur ohne die Trennzeichen angezeigt wird.


Wenn Sie sich jedoch mit den Fingerabdrücken befassen, die Amazon in der EC2-Schlüsselpaarkonsole anzeigt, kann dies leider ein anderes Biest sein . Wenn es sich um eine 32-stellige Hex-Zeichenfolge handelt, ist dies der oben angegebene Standard-Fingerabdruck des öffentlichen MD5-SSH-Schlüssels. Wenn es sich jedoch um 40 Hexadezimalstellen handelt, handelt es sich tatsächlich um einen Fingerabdruck, der berechnet wird, indem der SHA1 des privaten Schlüssels im PKCS # 8-Format verwendet 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
62
andrew.n
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 Records gestellt werden.

0
Mike Schroll