Convertir pem clé ssh-rsa format
J'ai un certificat en der
format, avec cette commande j'générer une clé publique:
openssl x509 -inform der -in ejbcacert.cer -noout -pubkey > pub1key.pub
Qui résultats dans ce:
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7vbqajDw4o6gJy8UtmIbkcpnk
O3Kwc4qsEnSZp/TR+fQi62F79RHWmwKOtFmwteURgLbj7D/WGuNLGOfa/2vse3G2
eHnHl5CB8ruRX9fBl/KgwCVr2JaEuUm66bBQeP5XeBotdR4cvX38uPYivCDdPjJ1
QWPdspTBKcxeFbccDwIDAQAB
-----END PUBLIC KEY-----
Comment puis-je obtenir une clé publique de ce genre? Soit d'un certificat ou d'
à partir de cette clé publique?
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC7vbqajDw4o6gJy8UtmIbkcpnkO3Kwc4qsEnSZp/TR+fQi62F79RHWmwKOtFmwteURgLbj7D/WGuNLGOfa/2vse3G2eHnHl5CB8ruRX9fBl/KgwCVr2JaEuUm66bBQeP5XeBotdR4cvX38uPYivCDdPjJ1QWPdspTBKcxeFbccDw==
Cela a été obtenu avec cette commande:
ssh-keygen -y -f private_key1.pem > public_key1.pub
- Le chemin que vous avez posté dans le "Cela a été obtenu avec cette commande" a fonctionné pour moi, mieux que toutes les réponses ci-dessous.
- Idem @YoavShapira. Une étape supplémentaire, s'il provient d'une openssl PKCS12 clé privée: "openssl pkcs12-in private_key1.p12 -out private_key1.pem"
- Oui, mais toute la question est qu'il veut convertir en utilisant uniquement la clé publique. Peut-être qu'il n'a pas la clé privée et il n'a que la clé publique et veut convertir de format PEM à ssh-rsa format.
- Étant donné un .pem d'AWS, la commande vous donner ci-dessus
ssh-keygen -y -f private_key1.pem > public_key1.pub
a très bien fonctionné pour moi. - Toutes les mauvaises réponses. C'est le bon:
ssh-keygen -i -m PKCS8 -f public-key.pem
Vous devez vous connecter pour publier un commentaire.
Pas besoin de compiler des trucs. Vous pouvez faire de même avec
ssh-keygen
:va lire la clé publique dans openssl format de
pub1key.pub
et sortie au format OpenSSH.Note: Dans certains cas, vous aurez besoin de spécifier le format d'entrée:
De la ssh-keygen docs (De man ssh-keygen):
-m
n'est pas pris en charge, fonctionne très bien sans elle.-m PKCS8
était nécessaireuudecode failed.
Lors de l'exécution de cette$ ssh-keygen -f mykey.pub -i
key_from_blob: invalid format
decode blob failed.
Pas besoin de scripts ou d'autres "trucs":
openssl
etssh-keygen
sont assez. Je suis en supposant qu'aucun mot de passe pour les clés (ce qui est mauvais).Générer un RSA paire
Toutes les méthodes suivantes de donner une paire de clés RSA dans le même format
Avec openssl (l'homme genrsa)
Dans OpenSSL v1.0.1
genrsa
est remplacée pargenpkey
donc, c'est la nouvelle façon de faire (l'homme genpkey):Avec ssh-keygen
Conversion DER à PEM
Si vous avez une paire de clés RSA au format DER, vous pouvez le convertir en format PEM pour permettre la conversion de format ci-dessous:
Génération:
De Conversion:
Extraire la clé publique à partir du format PEM RSA paire
au format PEM:
dans OpenSSH v2 format voir:
Notes
OS et la version du logiciel:
Références:
ssh-rsa
format? Bonne référence, btw.ssh-keygen -y -f dummy-xxx.pem
produit unssh-rsa AAAA[...]==
ajustement pour le ssh estauthorized_keys
fichier.Pour répondre à ma propre question, après la publication sur openssl liste de diffusion obtenu ceci:
Voici le code en C pour convertir à partir d'un OpenSSL clé publique à une OpenSSH clé publique.
Vous pouvez saisir le code de ce lien et le compiler vous-même:
Toutes les mauvaises réponses. C'est le bon:
ssh-keygen -i -m PKCS8 -f public-key.pem
do_convert_from_pkcs8: TEST.pem is not a recognised public key format
Je l'ai fait avec
Crédit va ici
Le script suivant serait d'obtenir la ci.jenkins-ci.org certificat de clé publique en base64 DER format et la convertir en un OpenSSH fichier de clé publique. Ce code suppose que de 2048 bits RSA clé est utilisée et attire beaucoup de ce Ian Boyd réponse. J'ai expliqué un peu plus la façon dont il fonctionne dans les commentaires de cet article dans Jenkins wiki.
FWIW, ce script BASH va prendre un PEM ou DER-format X. 509 ou certificat OpenSSL fichier de clé publique (aussi format PEM) comme premier argument et remettre un OpenSSH clé publique RSA. Cela élargit @mkalkov la réponse ci-dessus. Les exigences sont
cat
,grep
,tr
,dd
,xxd
,sed
,xargs
,file
,uuidgen
,base64
,openssl
(1.0+), et bien sûrbash
. Tous, saufopenssl
(contientbase64
) sont à peu près garanti à la partie de l'installation de base sur tout système Linux, sauf peut-êtrexxd
(qui Fedora montre dans levim-common
package). Si quelqu'un veut le nettoyer et de le rendre plus agréable, caveat lector.Suffit d'utiliser:
Script est ici.