Es gibt mehrere Probleme mit diesem Kommando-Pipeline:
key=$(ssh-keygen -yf lony.pem) | echo $key |
ssh-keygen -lf /dev/stdin <<<"$key"
Erstens ist es nicht klar, warum Sie mit dem Rohr sind versuchen (|
) die stdout Ihrer Zuweisungsanweisung an die echo
Aussage. Die erste erzeugt keine Ausgabe und die zweite keine Eingabe. In der dritten Komponente leiten Sie den Befehl stdout vom echo
-Befehl an die Standardadresse ssh-keygen
... wo Sie sind auch umleiten stdin mit dem Operator <<<
.
Der einfachste Weg ist es, den Fingerabdruck von einer privaten Schlüsseldatei erhalten einfach auszuführen:
ssh-keygen -lf /path/to/privatekey.pem
Zum Beispiel, wenn wir einen privaten Schlüssel zu generieren:
bash-4.3$ ssh-keygen -f testkey -N ''
Wir können die dann vergleichen Ausgang dieses:
bash-4.3$ ssh-keygen -lf testkey
2048 SHA256:beF471z86giH7cV49TduNVFD949UXzT+jHxgu+99gmM [email protected] (RSA)
Um dies zu:
bash-4.3$ ssh-keygen -yf testkey | ssh-keygen -lf /dev/stdin
2048 SHA256:beF471z86giH7cV49TduNVFD949UXzT+jHxgu+99gmM no comment (RSA)
Und sehen Sie, dass wir den gleichen Fingerabdruck von beiden Befehlen erhalten.
Danke, dass Sie Recht haben! Ich wollte nur den Fingerabdruck vom öffentlichen Schlüssel. Problem: Ihr letzter Befehl führt immer zu "/ dev/stdin ist keine öffentliche Schlüsseldatei". – lony
Könnte es sein, dass AWS eine andere Fingerabdruckmethode verwendet? Wenn Sie die erste Methode verwenden, geben Sie einen anderen Hash zurück, wie AWS :( – lony
http://serverfault.com/questions/603982/why-does-my-openssh-key-fingerprint-not-match-the-aws-ec2-console- Schlüsselpaar-Finger Das hat es gelöst – lony