jsch读取密钥报错com.jcraft.jsch.JSchException: invalid privatekey: [B@6f4327ab

2,976 阅读1分钟

在进行sftp连接的时候 jsch 读取私钥出错。

com.jcraft.jsch.JSchException: invalid privatekey: [B@6f4327ab
	at com.jcraft.jsch.KeyPair.load(KeyPair.java:664)
	at com.jcraft.jsch.KeyPair.load(KeyPair.java:561)
	at com.jcraft.jsch.IdentityFile.newInstance(IdentityFile.java:40)
	at com.jcraft.jsch.JSch.addIdentity(JSch.java:406)
	at com.jcraft.jsch.JSch.addIdentity(JSch.java:366)
        ...

invalid privatekey 这是由于密钥对是高版本的openssh8创建的,jsch不支持,更换最新版本也不行。可以使用puttygen工具将其转为低版本的密钥形式,不必重新生成密钥对。

openssh8生成的密钥的开头是

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

低版本的密钥开头是

-----BEGIN RSA PRIVATE KEY-----

image.png