带标题的RSA私钥和OPENSSH私钥有什么区别?

时间:2019-04-17 17:56:06

标签: java ssh sftp

我正在使用在Mac上使用ssh-keygen生成的公用/专用密钥来设置文件的SFTP传送到服务器。我生成的私钥与代码库中已有的其他私钥看起来有所不同(它没有标题,并且是“ OPENSSH PRIVATE KEY”而不是“ RSA PRIVATE KEY”。

我的Java FtpUtil抛出invalid privatekey错误。

这是因为我生成的密钥未正确格式化吗?有没有办法更改此私钥以使用标头?

这是代码库中其他私钥的样子:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,E26BE59A622AEDE6A899FE18AD369AA0

<key text>

-----END RSA PRIVATE KEY-----

这是我的私钥的样子:

-----BEGIN OPENSSH PRIVATE KEY-----

<key text>

-----END OPENSSH PRIVATE KEY-----

我正在抛出以下异常:

Caused by: com.jcraft.jsch.JSchException: invalid privatekey: [B@5c0f79f0
    at com.jcraft.jsch.KeyPair.load(KeyPair.java:664)
    at com.jcraft.jsch.IdentityFile.newInstance(IdentityFile.java:46)
    at com.jcraft.jsch.JSch.addIdentity(JSch.java:442)
    at org.springframework.integration.sftp.session.DefaultSftpSessionFactory.initJschSession(DefaultSftpSessionFactory.java:410)
    at org.springframework.integration.sftp.session.DefaultSftpSessionFactory.getSession(DefaultSftpSessionFactory.java:385)
    ... 46 more

1 个答案:

答案 0 :(得分:1)

看来这个私钥确实没有正确格式化。 也许最好描述一下如何生成私钥以及如何在代码中对其进行处理?

无论如何,您可以尝试使用以下方法生成加密的RSA私钥:

openssl genrsa -des3 -out private_key.pem 2048