【问题标题】:addIdentity in JSch is private key of calling program's ServerJSch 中的 addIdentity 是调用程序服务器的私钥
【发布时间】:2015-12-10 20:12:54
【问题描述】:

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

  • “服务器 1”拥有“服务器 1”的私钥和“服务器 2”的公钥。
  • “服务器 2”拥有“服务器 2”的私钥和“服务器 1”的公钥。

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

我对在 addIdentity 方法中提到私钥感到困惑。如果可能的话,请给我一些与 JSch 相关的文档,这对我有更多启发。

【问题讨论】:

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


    【解决方案1】:

    你的理解是正确的。

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

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


    详情请阅读Public-key/asymmetric cryptography


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

    【讨论】:

    • ,感谢您的回复。但是服务器中的许多用户可以使用单个私钥,如果他们有权访问该文件,对吗?
    • 可以,但不常用。私钥应该是私有的。一旦许多用户可以访问密钥,没有人可以确定其他用户是否没有泄露密钥。这就像共享密码一样不安全。
    猜你喜欢
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-26
    • 2018-10-12
    • 2019-04-07
    • 2015-12-06
    相关资源
    最近更新 更多