
Bei ssh
der Server- und Client-Authentifizierung werden Schlüsselfingerabdrücke selbst bei Verwendung desselben Befehls auf unterschiedliche Weise dargestellt ssh-keygen -lf
(auf unterschiedlichen Hosts oder in Bezug auf unterschiedliche Schlüssel).
Darstellung 1:
$ ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:3RE3UrGaTAec8H4YnZG7JTlfXpKvl89iexdqzLCyffY root@hostname1 (ED25519)
Darstellung 2:
$ ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
d0:21:3e:ec:52:ff:19:a9:e7:71:b5:7f:63:23:57:f7
(Beispiel ausdiese Seite)
Darstellung 3:
AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHVo5+sYnRQxerJjG/DmUzQFso+CGzcnGT/SDa457qQqh6WIquvWOIXIY5gNPZoOByAoriK+WRxgTT39hYFmpXE=
aus
$ ssh-keygen -H -F hostname2
|1|/DmY6Hm8TdZogykndJOUacp2NaM=|uM+t3vLw3KRySPUeXNqBLCxaGtY= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHVo5+sYnRQxerJjG/DmUzQFso+CGzcnGT/SDa457qQqh6WIquvWOIXIY5gNPZoOByAoriK+WRxgTT39hYFmpXE=
Dies ist die Zeile in .ssh/known_hosts
der Datei, die entspricht hostname2
.
Was ist der Unterschied zwischen ihnen? Und wenn sie gleichwertig sind, wie erhält man die jeweilige Darstellung aus den anderen?
Die Darstellungen 1 und 3 wurden OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017
unter Ubuntu 18.04 erstellt.
Antwort1
Ältere Versionen derssh-keygen
Das Dienstprogramm von OpenSSH zeigte nur MD5-Hashes an; das Dienstprogrammzeigt jetzt standardmäßig einen SHA256-Hash an, obwohl Sie immer noch einen MD5-Hash mit der folgenden Option auswählen können -E
:
user@host:~/.ssh$ ssh-keygen -E md5 -l -f samplekey
2048 MD5:e6:1f:73:0f:14:cb:9a:71:2f:3b:31:b7:3f:58:1c:52 user@host (RSA)
user@host:~/.ssh$ ssh-keygen -E sha256 -l -f samplekey
2048 SHA256:Oyt9H15ZBmITbhljpSiE/BLreo/+j+6lsC3gClGI97U user@host (RSA)
user@host:~/.ssh$ ssh-keygen -B -l -f samplekey
2048 xomiz-lozad-ruzin-lasuz-vibic-fydar-hecoh-mapuv-vytus-futah-maxox user@host (RSA)
Darüber hinaus können Sie das -v
Flag (visuell) entweder zum MD5- oder zum SHA256-Hash hinzufügen, um zusätzlich zu einem alphanumerischen Hash ein ASCII-Art-Vergleichsbild zu erhalten:
user@host:~/.ssh$ ssh-keygen -E sha256 -l -v -f samplekey
2048 SHA256:Oyt9H15ZBmITbhljpSiE/BLreo/+j+6lsC3gClGI97U user@host (RSA)
+---[RSA 2048]----+
| . .. =.. |
|.. +. + * |
|o o .+. . O . |
| o . .o... o o . |
|. ..E.S o|
| . . . . + |
|. . o..o . . o |
| . o +=.*.. o |
| .. o+BXo..o |
+----[SHA256]-----+
user@host:~/.ssh$
samplekey.pub
Ihre dritte Darstellung ist kein Fingerabdruck, sondern der öffentliche Schlüssel, Base-64-codiert, wie er in einer Datei oder in der Datei auf einem System gespeichert wird, known_hosts
das diesen Schlüssel akzeptiert.
Es gibt keine Möglichkeit, den Schlüssel aus dem Hash zu ermitteln. Um den Hash aus dem Schlüssel zu erhalten, verwenden Sie das ssh-keygen
Dienstprogramm entweder mit seinen Standardoptionen oder mit den Optionen -E
, -B
, und/oder , -v
um den gewünschten Ausgabestil zu erhalten.
Um den Fingerabdruck eines Schlüssels in einer known_hosts
Datei abzurufen (und nicht in der ursprünglichen öffentlichen Schlüsseldatei, wie in den Beispielen oben), können Sie eine Zeichenfolge mit dem Schlüsseltyp und dem Schlüssel direkt an Folgendes weiterleiten ssh-keygen
:
$ echo "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHVo5+sYnRQxerJjG/DmUzQFso+CGzcnGT/SDa457qQqh6WIquvWOIXIY5gNPZoOByAoriK+WRxgTT39hYFmpXE=" | ssh-keygen -l -f -
256 SHA256:wOxOBgRQp1qQcnTIjgmE/GB8+3fm8ahyDXuL/2GzgIo no comment (ECDSA)