Comment générer ssh compatible id_rsa (.pub) à partir de Java
Je suis à la recherche d'un moyen de créer par programme ssh compatible id_rsa et id_rsa.pub des fichiers en Java.
Je suis comme loin en créant la paire de Clés:
KeyPairGenerator generator;
generator = KeyPairGenerator.getInstance("RSA");
//or: generator = KeyPairGenerator.getInstance("DSA");
generator.initialize(2048);
keyPair = generator.genKeyPair();
Je ne peux pas savoir cependant comment créer la représentation de Chaîne de la PrivateKey et PublicKey dans la paire de Clés.
source d'informationauteur Carsten
Vous devez vous connecter pour publier un commentaire.
Le format de la clé utilisée par ssh est définie dans le RFC #4253. Le format de clé publique RSA est la suivante :
Toutes les données de type de codage est défini dans la section #5 de RFC #4251. chaîne et mpint (multiple de précision integer) les types sont codés de cette manière :
par exemple, le codage de la chaîne "ssh-rsa" est:
Pour coder le public :
D'avoir une chaîne représentation de la touche encoder le retour de tableau d'octets en Base64.
Pour la clé privée de l'encodage il y a deux cas:
getEncoded
surRSAPrivateKey
.La solution générique pour tout
PublicKey
type (RSA, DSA, etc.) est un one-liner à l'aide de SSHJ:et puis l'encoder à l'aide de
Base64.getEncoder().encodeToString(b)
.Comme Carsten a mentionné, JSch peuvent générer ces clés facilement.
Reportez-vous à son exemple, KeyGen.java
gotoalberto's réponse (cité ci-dessous) pour une question différente pour les clés RSA et DSA: