如何将我的私钥(内容不是文件)传递给JSCH(对于sftp)?
答案 0 :(得分:2)
您可以使用重载方法KeyPair.load(JSch jsch,String prvfile,String pubfile)
,而不是使用KeyPair.load(JSch jsch,byte[] prvkey, byte[] pubkey)
。它应该支持直接加载内容。来源:apidoc。
答案 1 :(得分:-1)
我一直在努力解决相同的问题,但是我找到了一个解决方案,您必须在包含私钥的字符串中添加回车符并将其转换为US_ASCII:
private static byte[] readKey(String keyFileContent){
keyFileContent = keyFileContent.replace("-----BEGIN RSA PRIVATE KEY-----", "-----BEGIN RSA PRIVATE KEY-----\r\n").replace("-----END RSA PRIVATE KEY-----", "\r\n-----END RSA PRIVATE KEY-----");
return keyFileContent.getBytes(StandardCharsets.US_ASCII);
}
然后您可以通过以下方式调用addIdentity函数:
jsch.addIdentity("myconnection", readKey(privateKeyString), null, null);
然后,您可以按照文档中的示例进行操作: Documentation