当前位置: 首页 > 知识库问答 >
问题:

jsch:addIdentity来自存储在hdfs上的私钥[重复]

燕扬
2023-03-14

我需要从hadoop集群连接到sftp服务器。我想知道是否有办法从存储在HDFS中的私钥加载标识。实际上,JSch对象似乎只接受本地路径:

try {
    String privateKeyPath = "hdfs://namenode:8020/path/to/privatekey";  // need this one to be an hdfs path
    JSch jsch = new JSch();

    jsch.addIdentity(privateKeyPath);

    // [..]
}
catch (Exception ex) {
    // [..]
}

你知道吗?

共有1个答案

龙默
2023-03-14

感谢@Martin Prikryl回答,解决如下:

// Get sftp private/public key for JSch identity
FSDataInputStream fis = fs.open(privateKeyPath);
byte[] privateKeyBytes = IOUtils.toByteArray(fis);

fis = fs.open(publicKeyPath);
byte[] publicKeyBytes = IOUtils.toByteArray(fis);
fis.close();

JSch jsch = new JSch();
String idName = "ksftp";
byte[] passphrase = null;  
jsch.addIdentity(idName, privateKeyBytes, publicKeyBytes, passphrase);
 类似资料:
  • 问题内容: 我曾经生成过RSA密钥对。如果我没看错,那么KeyStore仅用于存储证书,而不用于存储密钥。如何将私钥正确存储在计算机上? 问题答案: 注意:此代码仅用于演示目的。将私钥存储在磁盘上时,必须对其进行加密。不要按原样使用它。 您可以执行以下操作: 保存功能: 并以相同的方式读回: 读取私钥相似。

  • 问题内容: 我正在使用该方法在Go中生成私钥/公钥对。我想将私钥存储在用户计算机上的文件中,并在程序启动时将其加载。有一种封送公钥的方法,但没有封送私钥的方法。我应该简单地自己滚动还是有推荐的存储私钥的方法? 问题答案: 这是一个代码示例,演示了Go中密钥的编码和解码。知道您需要连接几个步骤会有所帮助。加密算法是第一步,在这种情况下为ECDSA密钥。然后,您需要标准编码,x509是最常用的标准。最

  • 我看到钥匙和mModulas是相等的,有人知道吗?

  • 我正在尝试使用下面的代码从Android系统存储中导入私钥: 其中是使用方法检索的。不返回,但PrivateKey对象包含错误的键(其所有重要字段都为)。我认为密钥是不可导出的,并试图在下一段代码中使用它: UPD:我试着用不同的RSA证书做同样的事情,结果是一样的:(

  • 有没有人可以粘贴一些用于存储私钥和公钥的示例代码。 非常感谢!