JSch中的addIdentity是调用程序服务器的私钥

时间:2015-09-14 18:18:57

标签: java ssh public-key-encryption jsch private-key

“服务器1”正在使用SSH读取和写入“服务器2”。

  • “Server 1”拥有“Server 1”的私钥和“Server 2”的公钥。
  • “Server 2”拥有“Server 2”的私钥和“Server 1”的公钥。

在JSch中,当我使用Java程序从“服务器1”到“服务器2”进行通信时,程序正在使用addIdentity方法。这个方法使用“服务器1”的私钥,JSch不会发送给任何人(“服务器2”),我是对的吗?

很遗憾在addIdentity方法中提到私钥。如果可能的话,请给我一些JSch相关的文档,让我更多地了解。

1 个答案:

答案 0 :(得分:4)

您的理解是正确的。

.addIdentity用于指定在将数据发送到远程服务器(以及解密传入数据)之前应使用哪些私钥对数据进行本地加密。私钥本身不会发送到任何地方。只有公钥。

请注意.addIdentity加载密钥对(公钥和私钥)。即使您使用仅采用prvkey路径的重载,JSch也会假定公钥文件具有相同的名称,只有.pub扩展名;或者“私钥”文件实际上包含公钥和私钥。

有关详细信息,请参阅Public-key/asymmetric cryptography

但请注意,密钥是您与远程服务器连接的帐户的私钥。它不是(不应该)本地计算机的私钥(即使该计算机恰好是[SSH]服务器)。