这实际上可以通过
Maverick Synergy Java SSH API实现。
我们SSH API的这一新分支支持新的OpenSSH私钥文件格式,因此您可以加载新密钥并将其转换为BouncyCastle支持的旧PEM格式。
您需要以下Maven依赖项:
<dependency>
<groupId>com.sshtools</groupId>
<artifactId>maverick-synergy-client</artifactId>
<version>3.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.sshtools</groupId>
<artifactId>maverick-bc</artifactId>
<version>3.0.0-SNAPSHOT</version>
</dependency>
你还需要以下快照库,因为目前没有API的正式发布:
(您仍需添加以下快照仓库,因当前尚未有该API的正式发布版本。)
<repository>
<id>oss-snapshots</id>
<snapshots>
<enabled>true</enabled>
</snapshots>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
</repository>
首先,您可以使用以下命令加载新的OpenSSH私钥格式:
Original Answer翻译成:最初的回答
SshKeyPair key = SshKeyUtils.getPrivateKey(
new File("id_rsa"), "passphrase");
那么,您可以通过将其传递到旧格式实现并通过getFormattedKey方法检索文本来进行转换。翻译:"然后,您可以通过将其传入较旧的格式实现并通过getFormattedKey方法检索文本来进行转换。"
System.out.write(new OpenSSHPrivateKeyFileBC(
key, "passphrase").getFormattedKey());
作为此答案的背景说明并声明我是推荐项目Maverick Synergy的开发者,它是第三代API,继承自J2SSH Maverick和Maverick Legacy商业API。Maverick Synergy作为LGPL许可的开源产品完全可用。"最初的回答"