我正在使用在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
答案 0 :(得分:1)
看来这个私钥确实没有正确格式化。 也许最好描述一下如何生成私钥以及如何在代码中对其进行处理?
无论如何,您可以尝试使用以下方法生成加密的RSA私钥:
openssl genrsa -des3 -out private_key.pem 2048