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



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

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

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

不,给 JSch 你的私钥没有风险。

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

不信任你能找到的每个图书馆是一件好事。事实上,JSch可以只将您的私钥和所有其他凭据发送到某个服务器。开源的好处是:你可以看看JSch是否做这些事情!(但请注意,源代码的文档很差,写得不好,所以可能需要一些时间才能自己看)

据我所知,它没有,我想如果它会的话,它不会是 Java 中 SSH 的事实标准。

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

这就是公钥加密的工作原理。

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

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

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

最新更新