it-swarm.com.de

Holen Sie sich den Fingerabdruck des SSH-Schlüssels im (alten) Hex-Format in der neuen Version von openssh

Es scheint, dass openssh die Art und Weise geändert hat, wie wichtige Fingerabdrücke angezeigt werden.

Ich versuche, von einem Client-Rechner auf einen Server zu sshen:

  • client: ubuntu 14.04 mit OpenSSH 6.6.1
  • server: FreeBSD mit OpenSSH 7.2p2.

Der Client meldet den md5-Hash des Serverschlüssels als eine Folge von 16 hexadezimalen Ziffernpaaren wie folgt:

a7:b1:3e:3d:84:24:a2:5a:91:5f:6f:e9:cf:dd:2b:6a

Der Server verwendet standardmäßig den sha256-Hash, aber dank dieser Antwort kann ich ihn zwingen, den sha1-Hash zu geben, indem ich Folgendes ausführe:

[[email protected] /etc/ssh]# ssh-keygen -l -E sha1 -f ssh_Host_ecdsa_key.pub

Ich möchte, dass das Ergebnis so aussieht:

a7:b1:3e:3d:84:24:a2:5a:91:5f:6f:e9:cf:dd:2b:6a

aber stattdessen bekomme ich das:

256 SHA1:KIh0ejR4O+RqrSq7JdGAASddRfI [email protected] (ECDSA)

Für mich sieht es so aus, als würde jetzt eine Base64-codierte Version des Fingerabdrucks anstelle von Hex-Ziffern angezeigt.

Wie kann ich die vom (älteren) Client gemeldete Prüfsumme des Serverschlüssels im selben Format erhalten (durch Doppelpunkte getrennte hexadezimale Ziffern, sha1-Hash), um zu überprüfen, ob sie gleich sind?

EDIT: Die alte Version von SSH gibt die Prüfsumme md5 an, nicht die sha1-Prüfsumme wie ich fälschlicherweise gedacht. Die Verwendung dieser Prüfsumme (wie in der jetzt akzeptierten Antwort angegeben) in der Option -E ergibt die gewünschte Ausgabe.

27
stochastic

Der Client meldet den sha1-Hash des Serverschlüssels als eine Folge von 16 hexadezimalen Ziffernpaaren wie folgt:

    a7:b1:3e:3d:84:24:a2:5a:91:5f:6f:e9:cf:dd:2b:6a

Dies ist MD5-Hash.

Wie Sie sehen können, läuft

ssh-keygen -l -E md5 -f ssh_Host_ecdsa_key.pub

erhältst du den gleichen Fingerabdruck, den du brauchst, ohne einen solchen Harakiri, den du in deiner Antwort erklärst.

37
Jakuje

Wie sich herausstellt, kann das SSH-Kochbuch manuell Schlüssel im älteren Hex-Format generieren. Ich habe dies auf dem Freebsd-Server verwendet.

awk '{print $ 2}' key.pub | base64 -d | md5 | sed 's /../&:/ g; s /:. * $ // '

Aufschlüsselung:

awk '{print $ 2}' key.pub

drucken Sie die zweite (durch Leerzeichen getrennte) Spalte in "key.pub" aus, bei der es sich um den eigentlichen Schlüssel handelt

base64 -d

der Schlüssel ist Base64-codiert. Dies gibt die tatsächlichen Bytes des Schlüssels aus

md5

dies ist freebsds Äquivalent zu 'md5sum -b', das im Rezept auf der ssh-Kochbuchseite angegeben wurde

sed 's /../&:/ g; s /:. * $ // '

Hier gibt es zwei sed-Befehle:

s /../&:/ g;

ersetzen Sie jedes Zeichenpaar in der Zeile (dank der Markierung 'g' am Ende) durch dasselbe Paar, gefolgt von einem Doppelpunkt

s /:. * $ // '

entfernen Sie alle nachfolgenden Doppelpunkte (ersetzen Sie einen Doppelpunkt, gefolgt von einem Leerzeichen, gefolgt von etwas bis zum Ende der Zeile, mit nichts).

4
stochastic

In solchen Fällen verwende ich das folgende kleine Skript (getestet auf Debian und Ubuntu):

#!/bin/sh

# Gather the public ssh Host keys for the given Host
# and for each key print the fingerprint in hex format using the given
# checksum command (e.g. md5sum, sha256sum, ...)

if [ "$#" != 2 ]; then
  echo "usage: $0 hostname checksum_command"
  exit 1
fi

ssh-keyscan $1 2>/dev/null | while read -r line; do
  echo "Scanned key:"
  echo $line
  echo "$2 fingerprint:"
  echo $line | awk '{print $3}' | base64 -d | $2 -b | awk '{print $1}' | sed 's/../&:/g' | sed 's/:$//'
  echo
done

Beispielverwendung:

$ myscript Host.example.com md5sum
Scanned key:
Host.example.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJUXq7vpcEpnZQxxiLw/tdg8ui4LoqbW1O5nGyLtGw49
md5sum fingerprint:
6c:ef:26:f7:98:ad:ed:5b:cc:ff:83:13:46:c9:f6:79

Scanned key:
Host.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC4aLMajBvisnWNR2VX5K1KEkNeRmzlcs+svbY6/DiumMTZNtqB5duZjGkMmEbIclHaT7rQG9efAWsNhai5cJVRZ4VX1Gu/TLycEk4OY56MrrWjQYweSUr/W6E0eVCf7gh/ym2vMcevct4373fGDdlogk9Wa97lDV6PUXRy/znxRlo3tBc6KMOZIBoPu8UjeLr2ZPNPjO6hXX/96HbYfboxjhMl5eb8AWR0MGd4qU7RZZa2XhT4/4eSo8h9gEq8V3tasB24fMdw3K+HRiDyZm8uoNq+IrJlC22pBpzxRQtsv0Nd+uC5pK/UPVI3AFfdHMrmn7IHRio8aEaTloM6MRysGMtXE0kFQ/pV2U3TBmK/9wxID83qMDsQeUH4oTyjSJ0dCBuqgVQUg44z5qXVOK7gruvZSTyH7DsIyAXhlvLNwdtXPJ4HPQ90ZxLpiFWYgSPErQgbfgKeFkoSQiSP1M+UMkITCGRKMeUeDINheRJh/5y8+C3DjE54xyI4903ztyI7HqgVTOOFCtf+dlhCuS6+J20PFXEHDMdGCwmPQrKOG9Rb4NBxuvtn7MxJnwnlIu3nhDjr8SlZDOTvuK+bLpc4AZwEsNY7ANKFvj2mqE6hjkhu+x7khg84VQ6BKOmHIQnMrCpqICaNgB7Vz2d183BETrnfKQaPh79G5cQox5vwvw==
md5sum fingerprint:
b2:9c:cd:30:b1:38:e3:d1:17:d6:73:eb:03:9a:80:83

$ myscript Host.example.com sha256sum
Scanned key:
Host.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC4aLMajBvisnWNR2VX5K1KEkNeRmzlcs+svbY6/DiumMTZNtqB5duZjGkMmEbIclHaT7rQG9efAWsNhai5cJVRZ4VX1Gu/TLycEk4OY56MrrWjQYweSUr/W6E0eVCf7gh/ym2vMcevct4373fGDdlogk9Wa97lDV6PUXRy/znxRlo3tBc6KMOZIBoPu8UjeLr2ZPNPjO6hXX/96HbYfboxjhMl5eb8AWR0MGd4qU7RZZa2XhT4/4eSo8h9gEq8V3tasB24fMdw3K+HRiDyZm8uoNq+IrJlC22pBpzxRQtsv0Nd+uC5pK/UPVI3AFfdHMrmn7IHRio8aEaTloM6MRysGMtXE0kFQ/pV2U3TBmK/9wxID83qMDsQeUH4oTyjSJ0dCBuqgVQUg44z5qXVOK7gruvZSTyH7DsIyAXhlvLNwdtXPJ4HPQ90ZxLpiFWYgSPErQgbfgKeFkoSQiSP1M+UMkITCGRKMeUeDINheRJh/5y8+C3DjE54xyI4903ztyI7HqgVTOOFCtf+dlhCuS6+J20PFXEHDMdGCwmPQrKOG9Rb4NBxuvtn7MxJnwnlIu3nhDjr8SlZDOTvuK+bLpc4AZwEsNY7ANKFvj2mqE6hjkhu+x7khg84VQ6BKOmHIQnMrCpqICaNgB7Vz2d183BETrnfKQaPh79G5cQox5vwvw==
sha256sum fingerprint:
f4:61:58:e4:90:65:c4:70:98:7f:d1:40:0a:d8:d9:79:14:e6:91:dc:b6:ed:91:8c:c0:df:d9:65:db:dd:a0:18

Scanned key:
Host.example.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJUXq7vpcEpnZQxxiLw/tdg8ui4LoqbW1O5nGyLtGw49
sha256sum fingerprint:
4b:73:d1:d7:80:87:46:64:56:71:64:10:7a:66:83:9b:c7:58:39:0b:16:74:dd:9b:d9:4b:e5:d5:61:7e:99:45
2
rpr