我指的是

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

我尝试使用它,无论我以pubkey作为输入(无论长度或字符如何),只要prvkey匹配,连接都会建立。

这是正常现象吗?为何还要求pubkey

经过更多研究,似乎没有故意忽略pubkey,但是必须遵守某些规则才能考虑,否则似乎仍然仅考虑prvkey

最佳答案

当您将多个密码短语加密的密钥对加载到JSch(或任何SSH库/客户端)中时,使用未加密的公共(public)密钥特别有用。

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

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

08-28 01:02