This question already has answers here:
“Invalid privatekey” when using JSch
                            
                                (4个答案)
                            
                    
                去年关闭。
        

    

我正在使用在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

最佳答案

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

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

openssl genrsa -des3 -out private_key.pem 2048

10-01 01:57
查看更多