Lösung 1:
Ich bevorzuge ssh-keygen -y -e -f <private key>
anstelle der akzeptierten Antwort von Wie testet man ein öffentliches/privates DSA-Schlüsselpaar? bei Stapelüberlauf.
ssh-keygen -y -e -f <private key>
nimmt einen privaten Schlüssel und druckt den entsprechenden öffentlichen Schlüssel, der direkt mit Ihren verfügbaren öffentlichen Schlüsseln verglichen werden kann. (Tipp:Vorsicht bei Kommentaren oder Tastenoptionen.)
(Wie zum Teufel macht es das? Ich kann nur hoffen, dass der öffentliche Schlüssel direkt oder indirekt im privaten Schlüssel kodiert ist...)
Ich habe das selbst gebraucht und den folgenden Bash-Einzeiler verwendet. Es sollte nichts ausgeben, wenn die Schlüssel zusammengehören. Tragen Sie ein wenig -q
auf zum Diff in Skripten und Diff setzt nur den Rückgabecode entsprechend.
PRIVKEY=id_rsa
TESTKEY=id_rsa.pub
diff <( ssh-keygen -y -e -f "$PRIVKEY" ) <( ssh-keygen -y -e -f "$TESTKEY" )
Lösung 2:
Je nachdem, wo Sie die zu testende öffentliche Schlüsseldatei erhalten, kann die akzeptierte Antwort zu falsch positiven Ergebnissen führen. Dies liegt an dem im Kommentar von @drewbenn beschriebenen Verhalten. Insbesondere, wenn die Option -e mit der privaten Schlüsseldatei als Parameter der Option -f verwendet wird, wiederholt sie einfach, was in der zugehörigen öffentlichen Schlüsseldatei steht (aber neu formatiert).
Mit anderen Worten,
ssh-keygen -y -f id_rsa
(scheinbar) erzeugt der Wert des öffentlichen Schlüssels und
ssh-keygen -y -e -f id_rsa
einfach und gibt (und formatiert) den Schlüssel im vorhandenen aus id_rsa.pub was auch immer es ist .
In meinem Fall muss ich überprüfen, ob das Paar nicht beschädigt wurde. Also beschloss ich, Folgendes zu vergleichen:
ssh-keygen -y -f id_rsa | cut -d' ' -f 2
mit
cut -d' ' -f 2 id_rsa.pub
Deshalb:
diff <(cut -d' ' -f 2 id_rsa.pub) <(ssh-keygen -y -f id_rsa | cut -d' ' -f 2)
Vielleicht ist das nicht so flexibel, aber es ist besser für meine Bedürfnisse. Vielleicht hilft es jemand anderem.
Lösung 3:
Wenn sie sich auf Ihrem lokalen System befinden, kleben Sie id_rsa.pub
in Ihrem $HOME/.ssh/authorized_keys
und ssh
bis localhost
mit dem id_rsa
Schlüssel. Wenn es funktioniert, dann passen sie zusammen.
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
ssh -i $HOME/.ssh/id_rsa localhost