JSch.addIdentity 公钥参数的用途

Purpose of pubkey parameter of JSch.addIdentity

我指的是

public void addIdentity(String name,
                        byte[] prvkey,
                        byte[] pubkey,
                        byte[] passphrase)
                 throws JSchException

我试过使用它,无论我输入什么 pubkey(不管长度或字符),只要 prvkey 匹配,就会建立连接.

这是正常行为吗?为什么还要请求 pubkey

经过更多的研究,似乎 pubkey 并没有被故意忽略,但它必须遵守某些规则才能被考虑在内,否则它似乎仍然只考虑 prvkey.

当您将多个密码加密的密钥对加载到 JSch(或任何 SSH library/client)时,拥有未加密的 public 密钥特别有用。

有了未加密的 public 密钥,客户端 (JSch) 可以使用 public 密钥询问服务器是否识别该密钥。如果是这样,只有 JSch 才会要求提供密码来解密私钥。

如果您只有一个密钥或所有密钥都未加密,则无需指定 pubkey(使用 null)。