JSCH - 传递私钥字符串而不是文件路径

时间:2017-04-10 15:42:40

标签: java jsch

如何将我的私钥(内容不是文件)传递给JSCH(对于sftp)?

2 个答案:

答案 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