Ich musste dies vor kurzem selbst tun, daher dachte ich, ich würde eine Antwort hinzufügen, die zeigt, wie dies (mit Versionen von OpenSSH 7.2 oder neuer ) in einer Zeile unter Verwendung der Prozessersetzung getan werden kann:
ssh-keygen -lf <(ssh-keyscan hostname 2>/dev/null)
Der folgende Text erläutert die Funktionsweise dieser Befehle und hebt einige Unterschiede im Verhalten älterer und neuerer Versionen der OpenSSH-Dienstprogramme hervor.
Holen Sie sich öffentliche Host-Schlüssel
Der ssh-keyscan
Befehl wurde entwickelt, damit Benutzer öffentliche Hostschlüssel erhalten können, ohne sich beim SSH-Server authentifizieren zu müssen. Von seiner Manpage:
ssh-keyscan
ist ein Dienstprogramm zum Erfassen der öffentlichen SSH-Hostschlüssel einer Reihe von Hosts. Es wurde entwickelt, um beim Erstellen und Überprüfen von ssh_known_hosts
Dateien zu helfen
.
Schlüsselart
Die Art des abzurufenden Schlüssels wird mit der -t
Option festgelegt.
rsa1
(veraltetes SSH-Protokoll Version 1)
rsa
dsa
ecdsa
(neueste Versionen von OpenSSH)
ed25519
(neueste Versionen von OpenSSH)
In modernen OpenSSH-Releases müssen standardmäßig die Schlüsseltypen rsa
(seit Version 5.1), ecdsa
(seit Version 6.0) und ed25519
(seit Version 6.7) abgerufen werden .
In älteren Versionen von ssh-keyscan
(vor OpenSSH Version 5.1) war der
Standardschlüsseltyp veraltet rsa1
(SSH-Protokoll 1), sodass die Schlüsseltypen explizit angegeben werden müssten:
ssh-keyscan -t rsa,dsa hostname
Holen Sie sich Fingerabdruck-Hashes von Base64-Schlüsseln
ssh-keyscan
druckt den Host-Schlüssel des SSH-Servers im Base64-codierten
Format. Um dies in einen Fingerabdruck-Hash umzuwandeln, kann das ssh-keygen
Dienstprogramm mit seiner -l
Option verwendet werden, um den Fingerabdruck des angegebenen öffentlichen Schlüssels zu drucken.
Bei Verwendung von Bash, Zsh (oder der Korn-Shell) kann die Prozessersetzung für einen praktischen Einzeiler verwendet werden:
ssh-keygen -lf <(ssh-keyscan hostname 2>/dev/null)
Hinweis : In OpenSSH-Versionen vor 7.2 haben die ssh-keygen
zum Lesen von Dateien verwendeten Funktionen
Named Pipes (FIFOs) nicht sehr gut verarbeitet, sodass diese Methode nicht funktioniert und die Verwendung temporärer Dateien erforderlich ist.
Hashing-Algorithmen
Aktuelle Versionen von SHA256 Fingerabdruck-Hashes der Tasten ssh-keygen
drucken . Um MD5- Hashes der Serverschlüssel-Fingerabdrücke abzurufen (das alte Verhalten), kann die
Option verwendet werden, um den Hash-Algorithmus anzugeben:-E
ssh-keygen -E md5 -lf <(ssh-keyscan hostname 2>/dev/null)
Pipeline verwenden
Wenn Sie eine POSIX-Shell (z. B. dash
) ohne Prozessersetzung verwenden, funktionieren die anderen Lösungen mit temporären Dateien. In neueren Versionen von OpenSSH (seit 7.2) kann jedoch eine einfache Pipeline verwendet werden, da ssh-keygen
sie -
als Dateinamen für den Standardeingabestream akzeptiert und einen einzeiligen Pipelinebefehl zulässt.
ssh-keyscan hostname 2>/dev/null | ssh-keygen -E md5 -lf -
ssh-keygen -l -f - <(ssh-keyscan host)
doch?