【jsch链接报错invalid privatekey解决密钥格式openssh转rsa】

项目场景:

前段时间对接某家银行时需要对请求报文进行加密请求,但是加密的工具是行方提供的工具进行生成的,在读取生成的对应密钥时发生了报错


报错展示

在这里插入图片描述

原因分析:

“invalid privatekey” 错误表明你提供的私钥无效或格式不正确,所以优先去检查了私钥文件是否完整,格式是否正确在检查的过程中发现貌似私钥开头的格式和之前不同,于是上网上查了下资料发现最新版本的OpenSSH(7.8及更高版本)会以新的OpenSSH格式生成密钥

OpenSSH(7.8及更高版本)

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

之前的版本

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

可以看到OpenSSH(7.8及更高版本)格式为OPENSSH,而以前的版本格式为RSA

解决方案:

现在想要解决问题方法无外乎三个:
1:用低版本的的SSH工具,重新生成老版本的密钥。
2:修改密钥格式,让他变成RSA即可
3:生成密钥时指定格式,让他生成对应版本的密钥
由于生成密钥的工具是对方提供的,而且一般情况下普通开发人员也无法去生成密钥只有使用的权限。所以采用了第二种方式

修改密钥格式,把openssh转rsa(实测有效)

ssh-keygen -p -m pem -f path

path为密钥的路径,终端输入命令后会有两次密码输入,分别是之前的密码和生成后的新密码,有密码输密码,无密码回车即可

另外附录一下生成密钥时指定格式的命令,有兴趣的可以试一下

ssh-keygen -m PEM -t rsa

可能遇到的其他问题:

在这里插入图片描述

由于密钥文件非本机生成,在转换的过程中会提示文件过于开放是因为文件权限过大使用chmod调整文件权限为600即可

转换命令为

chmod 600 path

path为密钥的路径

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值