Question

Existe-t-il un moyen simple de vérifier qu'une clé privée donnée correspond à une clé publique donnée? J'ai quelques fichiers * .pub et quelques fichiers * .key, et je dois vérifier lequel va avec.

Encore une fois, ce sont des fichiers pub / key, DSA.

Je préférerais vraiment un one-liner en quelque sorte ...

Était-ce utile?

La solution

J'ai trouvé un moyen qui semble mieux fonctionner pour moi:

ssh-keygen -y -f <private key file>

cette commande affichera la clé publique pour la clé privée donnée, alors comparez simplement la sortie à chaque fichier * .pub.

Autres conseils

Je compare toujours un hachage MD5 du module à l'aide des commandes suivantes:

Certificate: openssl x509 -noout -modulus -in server.crt | openssl md5
Private Key: openssl rsa -noout -modulus -in server.key | openssl md5
CSR: openssl req -noout -modulus -in server.csr | openssl md5

Si les hachages concordent, ces deux fichiers vont ensemble.

Pour les clés DSA, utilisez

 openssl dsa -pubin -in dsa.pub -modulus -noout

pour imprimer les clés publiques, puis

 openssl dsa -in dsa.key -modulus -noout

pour afficher les clés publiques correspondant à une clé privée, puis comparez-les.

En supposant que vous disposiez des clés publiques dans des certificats x.509, et en supposant qu'il s'agisse de clés RSA, puis pour chaque clé publique, faites

    openssl x509 -in certfile -modulus -noout

Pour chaque clé privée, faites

    openssl rsa -in keyfile -modulus -noout

Faites ensuite correspondre les clés par module.

La vérification peut être facilitée avec diff:

diff <(ssh-keygen -y -f <private_key_file>) <public key file>

La seule chose étrange est que diff ne dit rien si les fichiers sont identiques, vous ne le saurez donc que si les public et privé ne correspondent pas .

Supprimez les clés publiques et générez-en de nouvelles à partir des clés privées. Gardez-les dans des répertoires séparés ou utilisez une convention de nommage pour les garder droits.

Si vous êtes sous Windows et souhaitez utiliser une interface graphique, utilisez puttygen , vous pouvez y importer votre clé privée:

 entrer la description de l'image ici

Une fois importé, vous pouvez enregistrer sa clé publique et la comparer à la vôtre.

Entrez la commande suivante pour vérifier si une clé privée et une clé publique correspondent à un ensemble mis en correspondance (identique) ou non (différent) dans le répertoire $ USER / .ssh. La commande cut empêche la comparaison du commentaire situé à la fin de la ligne de la clé publique, ce qui permet de ne comparer que la clé.

ssh-keygen -y -f ~/.ssh/id_rsa | diff -s - <(cut -d ' ' -f 1,2 ~/.ssh/id_rsa.pub)

La sortie ressemblera à l'une de ces lignes.

Files - and /dev/fd/63 are identical

Files - and /dev/fd/63 differ

J'ai écrit un script shell que les utilisateurs utilisent pour vérifier les droits d'accès aux fichiers de leurs fichiers ~ / .ssh / et à la clé correspondante. Il résout mes problèmes avec les incidents utilisateur lors de la configuration de ssh. Cela peut vous aider. https://github.com/BradleyA/docker-security-infrastructure/ arbre / maître / ssh

Remarque: ma réponse précédente (mars 2018) ne fonctionne plus avec les dernières versions d'Opensh. Réponse précédente: diff-qs & Lt; (ssh-keygen -yf ~ / .ssh / id_rsa) & Lt; (couper -d '' -f 1,2 ~ / .ssh / id_rsa.pub)

Cryptez quelque chose avec la clé publique et voyez quelle clé privée le déchiffre.

Cet article de projet de code par nul autre que Jeff Atwood implémente un wrapper autour des classes de cryptage .NET. En supposant que ces clés ont été créées pour être utilisées avec RSA, utilisez la classe asymétrique avec votre clé publique pour chiffrer et la même chose avec votre clé privée pour déchiffrer.

S'il ne renvoie rien, ils correspondent:

cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
ssh -i $HOME/.ssh/id_rsa localhost

Utilisez simplement puttygen et chargez votre clé privée dans il. Offre différentes options, par exemple exportation de la clé publique correspondante.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top