在JCraft JSch中共享私钥是否安全?

时间:2015-06-19 11:31:47

标签: java sftp jsch

在基于JCraft的SFTP通信中,使用JSch库为我的项目建立了通信。它运作良好,但我怀疑为什么我们必须共享下面的私钥?

JSch jsch=new JSch();
jsch.addIdentity(ex. ~/.ssh/id_dsa);

我知道当通信发生时,客户端必须生成公钥,但在这里我们共享客户端的私钥。请帮助我在这里分享私钥有风险。

3 个答案:

答案 0 :(得分:1)

使用公钥认证时,您需要使用私钥来加密消息(并使用您的公钥解密服务器加密的消息)。

Public-key cryptography的工作原理。

因此,您必须将您的私钥提供给JSch(或您可能正在使用的任何其他SSH / SFTP库)。

JSch不与任何人共享私钥(甚至不是服务器)。如果那是你的顾虑。它仅在本地使用私钥进行加密和解密。

答案 1 :(得分:1)

不,给JSch提供私钥没有风险。

为了使非对称加密工作,您必须使用私钥。 在这种情况下,JSch正在为您完成这项工作,但它不会将其发送给任何人,它只是用它来解密您收到的数据,并加密您发送的数据。

不相信你能找到的每个图书馆都是好事。实际上,JSch可以将您的私钥与所有其他凭据一起发送到某个服务器。关于开源的好处:you can take a look如果JSch做这些事情! (但请注意,源代码记录不完整,写得不好,所以可能需要一些时间才能看到)

据我所知,它没有,我猜它不会是Java中事实上的SSH标准。

答案 2 :(得分:0)

客户端必须向Jsch提供其私钥(而不是其公钥)以进行加密,客户端的公钥将位于服务器的authorized_keys中。服务器将使用公钥来解密由客户端私钥加密的数据。