Réponses:
Je préférerais le ssh-keygen -y -e -f <private key>
chemin à la place de la réponse acceptée de Comment tester une paire de clés DSA publique / privée? débordement de pile.
ssh-keygen -y -e -f <private key>
prend une clé privée et imprime la clé publique correspondante qui peut être comparée directement à vos clés publiques disponibles. (Astuce: méfiez-vous des commentaires ou des options-clés.)
(Comment diable fait-il cela? Je ne peux qu'espérer que la clé publique soit codée directement ou indirectement dans la clé privée ...)
J'en avais besoin moi-même et utilisais le one-liner Bash suivant. Il ne doit rien sortir si les clés vont ensemble. Appliquez un peu -q
à la diff dans les scripts et diff seulement définit le code de retour de manière appropriée.
PRIVKEY=id_rsa
TESTKEY=id_rsa.pub
diff <( ssh-keygen -y -e -f "$PRIVKEY" ) <( ssh-keygen -y -e -f "$TESTKEY" )
ssh-keygen -y -e -f id_rsa
ne vérifie absolument pas id_rsa mais renvoie simplement la valeur de id_rsa.pub. Donc, par exemple, si vous echo 5 > id_rsa
effacez la clé privée, faites le diff, le diff passera! En outre, ssh-keygen -yef foo
si foo n'est pas une clé valide (et n'a pas de fichier foo.pub correspondant), l'attente de la saisie par l'utilisateur sera bloquée. Soyez donc prudent si vous utilisez ceci dans un script.
Selon la source où vous obtenez le fichier de clé publique que vous testez, la réponse acceptée peut donner des résultats faux positifs. Cela est dû au comportement décrit dans le commentaire de @drewbenn. Plus précisément, lorsque l'option -e est utilisée avec le fichier de clé privée en tant que paramètre d'option -f, elle ne fait que perroquets (mais reformate) le contenu du fichier de clé publique associé.
En d'autres termes,
ssh-keygen -y -f id_rsa
(apparemment) génère la valeur de la clé publique, et
ssh-keygen -y -e -f id_rsa
simplement et affiche (et reformate) la clé dans le fichier id_rsa.pub existant, quel qu’il soit .
Dans mon cas, je dois vérifier que la paire n'a pas été corrompue. J'ai donc décidé de comparer ce qui suit:
ssh-keygen -y -f id_rsa | cut -d' ' -f 2
avec
cut -d' ' -f 2 id_rsa.pub
Donc:
diff <(cut -d' ' -f 2 id_rsa.pub) <(ssh-keygen -y -f id_rsa | cut -d' ' -f 2)
Ce n’est peut-être pas aussi flexible, mais c’est mieux pour mes besoins. Peut-être que cela aide quelqu'un d'autre.
S'ils sont sur votre système local, le bâton id_rsa.pub
dans votre $HOME/.ssh/authorized_keys
et ssh
à l' localhost
aide de la id_rsa
clé. Si cela fonctionne, alors ils correspondent.
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
ssh -i $HOME/.ssh/id_rsa localhost
ssh -v
aide beaucoup aussi.