在 JCraft JSch 中共享私钥安全吗

Is this safe to share private key in JCraft JSch

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

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

我知道当通信发生时,客户端必须产生public密钥,但这里我们共享客户端的私钥。请帮助我在此处共享私钥是否存在风险。

当使用 public 密钥认证时,您需要有私钥来加密消息(以及解密服务器使用您的 public 密钥加密的消息)。

这就是 Public-key cryptography 的工作原理。

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

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

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

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

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

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

据我所知,它不是,我猜它不会成为 Java 中 SSH 的实际标准。