本文不涉及任何高深技术难点,仅记录解决问题的过程,供自己在下次遇到的时候参考。
最近在对接工行的对账平台,需要使用sftp配合rsa私钥下载对账单,翻看了以前的代码以及网上搜索了一下,发现代码实现的话用jsch比较方便。
然后开始代码实现,然后发现网上大部分是通过密码或者私钥文件登录,但是这边不想存储文件,所以废了点时间找了直接通过私钥字符串来实现:
jsch.addIdentity("id_rsa", key.getBytes(), null, null);
本地密钥对是通过工行提供的工具来生成的,私钥类似于这种:
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCP3OMU9GXXXXXXXX...XXXXXX4W0F7bIvUZeuurhxv8MfER3B/H8hErSia81+HY=
是没有头部和尾部的
然后第一遍尝试果然出错了:
Caused by: com.jcraft.jsch.JSchException: invalid privatekey: [B@44e81672
于是开始仔细查看,然后发现应该是