Solution 1 :
Je préférerais le ssh-keygen -y -e -f <private key>
au lieu de la réponse acceptée de Comment testez-vous une paire de clés DSA publique/privée ? sur le 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 directement comparée à vos clés publiques disponibles. (Astuce :méfiez-vous des commentaires ou des options clés.)
(Comment diable fait-il ça ? J'espère seulement que la clé publique est encodée directement ou indirectement dans la clé privée...)
J'en avais besoin moi-même et j'ai utilisé le one-liner Bash suivant. Il ne devrait rien sortir si les clés vont ensemble. Appliquez un peu de -q
au diff dans les scripts et diff définit uniquement 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" )
Solution 2 :
Selon l'endroit où vous obtenez le fichier de clé publique que vous testez, la réponse acceptée peut donner des résultats faussement positifs. C'est à cause du 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 comme paramètre d'option -f, elle reproduit simplement (mais reformate) ce qui se trouve dans le 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 sort (et reformate) la clé dans le existant id_rsa.pub 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 les éléments suivants :
ssh-keygen -y -f id_rsa | cut -d' ' -f 2
avec
cut -d' ' -f 2 id_rsa.pub
Par conséquent :
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.
Solution 3 :
S'ils sont sur votre système local, collez id_rsa.pub
dans votre $HOME/.ssh/authorized_keys
et ssh
à localhost
en utilisant le 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