GNU/Linux >> Tutoriels Linux >  >> Linux

Comment vérifier si une paire de clés publique/privée RSA correspond

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

Linux
  1. Comment vérifier que le certificat Ssh a été signé par la clé privée Ssh Ca spécifiée ?

  2. Comment faire correspondre les paires de clés publiques et privées Openpgp exportées ?

  3. Comment faire un VPN

  4. Qu'est-ce que la cryptographie à clé publique (comment fonctionnent les VPN, partie 2)

  5. ssh-keygen - comment définir une clé rsa avec un certain nom d'utilisateur

Comment vérifier la version de Python

Comment vérifier la version Java

Comment configurer la clé publique et privée SSH sous Linux

Comment vérifier la version d'OpenGL ?

Comment ajouter une clé publique SSH au serveur

Comment convertir la clé privée de PuTTY (.ppk) en clé SSH