Ceci est en fait possible avec le Maverick Synergy Java SSH API.
Cette nouvelle branche de nos APIs SSH prend en charge le nouveau format de fichier de clé privée OpenSSH afin que vous puissiez charger la nouvelle clé et la convertir dans l'ancien format PEM pris en charge par BouncyCastle.
Vous aurez besoin des dépendances Maven suivantes :
com.sshtools
maverick-synergy-client
3.0.0-SNAPSHOT
com.sshtools
maverick-bc
3.0.0-SNAPSHOT
Vous aurez également besoin du dépôt snapshot suivant car il n'y a pas de version officielle de l'API pour le moment :
oss-snapshots
true
https://oss.sonatype.org/content/repositories/snapshots/
Tout d'abord, vous pouvez charger le nouveau format de clé privée OpenSSH en utilisant :
SshKeyPair key = SshKeyUtils.getPrivateKey(
new File("id_rsa"), "passphrase");
Ensuite, vous pouvez le convertir en le passant dans l'implémentation du format plus ancien et en récupérant le texte via la méthode getFormattedKey.
System.out.write(new OpenSSHPrivateKeyFileBC(
key, "passphrase").getFormattedKey());
En guise de contexte pour cette réponse et pour déclarer que je suis le développeur du projet recommandé, Maverick Synergy est une API de troisième génération qui a hérité des APIs commerciales J2SSH Maverick et Maverick Legacy. Maverick Synergy est entièrement disponible en tant que produit open source sous licence LGPL.
0 votes
Le format openssh est relativement nouveau et n'est pas pris en charge par grand-chose autre que openssh en ce moment.
0 votes
@JamesKPolk oui, c'est malheureusement exactement pourquoi je veux le convertir en RSA. La dernière version d'OSX Mojave génère par défaut des fichiers de clés openssh lorsque vous utilisez ssh-keygen, donc nous voyons beaucoup d'utilisateurs utiliser ces fichiers de clés par accident. Je veux les convertir automatiquement pour eux.