JSch.addIdentity 的 pubkey 参数的用途

Posted

技术标签:

【中文标题】JSch.addIdentity 的 pubkey 参数的用途【英文标题】:Purpose of pubkey parameter of JSch.addIdentity 【发布时间】:2020-04-26 21:49:22 【问题描述】:

我指的是

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

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

这是正常行为吗?那为什么还要pubkey呢?

经过一番研究,似乎pubkey 不是故意忽略的,但它必须尊重某些规则才能考虑,否则它似乎仍然只考虑prvkey

【问题讨论】:

【参考方案1】:

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

拥有未加密的公钥,客户端(JSch)可以使用公钥询问服务器,它是否识别密钥。如果是这样,那么只有 JSch 会要求输入密码来解密私钥。

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

【讨论】:

以上是关于JSch.addIdentity 的 pubkey 参数的用途的主要内容,如果未能解决你的问题,请参考以下文章

使用 JSch 时出现“无效的私钥”

JSch SFTP 安全性与 session.setConfig("StrictHostKeyChecking", "no");

sh 生成aws pubkey指纹

powershell:sign_and_send_pubkey:签名失败:代理拒绝操作

如何解决“sign_and_send_pubkey:签名失败:代理拒绝操作”?

sh GPG错误 - NO_PUBKEY