问题一、椭圆曲线(Elliptic Curve, EC)加密算法的私钥文件。

-----BEGIN EC PRIVATE KEY-----

-----END EC PRIVATE KEY-----

解决:
使用jsch最新版本进行访问,支持ecdsa-sha2-nistp25加密算法。

	<dependency>
			<groupId>com.jcraft</groupId>
			<artifactId>jsch</artifactId>
			<version>0.1.55</version>
	</dependency>


问题二、密钥格式不匹配

最新版本的OpenSSH(7.8及更高版本)会以新的OpenSSH格式生成密钥,而旧版本的OpenSSH或某些工具可能不支持这种新格式。新格式的私钥以-----BEGIN OPENSSH PRIVATE KEY-----开头,而旧格式以-----BEGIN RSA PRIVATE KEY-----开头。

com.jcraft.jsch.JSchException: invalid privatekey: [B@4b2e8012
        at com.jcraft.jsch.KeyPair.load(KeyPair.java:664) ~[jsch-0.1.55.jar!/:?]
        at com.jcraft.jsch.IdentityFile.newInstance(IdentityFile.java:46) ~[jsch-0.1.55.jar!/:?]
        at com.jcraft.jsch.JSch.addIdentity(JSch.java:441) ~[jsch-0.1.55.jar!/:?]

解决:如果您的私钥是新格式(OpenSSH格式),您可以尝试将其转换为旧格式(RSA格式)。

执行ssh-keygen命令后,您需要输入三次密码,分别是原密码、新密码、新密码(如果没有设置密码,则直接回车)

## It is required that your private key files are NOT accessible by others.
## This private key will be ignored.
chmod 600 /root/id_rsa


## 转换密钥格式
ssh-keygen -p -m pem -f /root/id_rsa


 

更多推荐