SSH:代理密钥 RSA SHA256:[hash] 返回了错误的签名类型

SSH:代理密钥 RSA SHA256:[hash] 返回了错误的签名类型

我刚刚升级了两台机器Debian 9Debian 10现在,当我使用 SSH 连接它们时,收到以下警告:

agent key RSA SHA256:[hash] returned incorrect signature type

我之前一直使用完全相同的设置,没有人抱怨。

尽管它对成功连接的能力没有任何影响,但我想了解它到底意味着什么以及如何解决它。

这是ssh -vvv输出:

debug3: sign_and_send_pubkey: RSA SHA256:[hash]
debug3: sign_and_send_pubkey: signing using rsa-sha2-512
agent key RSA SHA256:[hash] returned incorrect signature type
debug3: sign_and_send_pubkey: signing using ssh-rsa

我是否理解正确,我的 SSH 客户端正在使用哈希算法来签署 SSH 服务器不喜欢的密钥?或者是 SSH 代理?请问如何正确配置它以使 SSH 服务器不发出抱怨?

我不明白预期的是什么以及实际使用了什么,对前缀SHA256:和消息感到困惑signing using rsa-sha2-512

答案1

我之前一直使用完全相同的设置,没有人抱怨。

您从 Debian 9 升级到 Debian 10。这不再是“完全相同的设置”。

我是否理解正确,我的 SSH 客户端正在使用散列算法来签署 SSH 服务器不喜欢的密钥?

否;SSH 代理正在使用哈希算法客户不喜欢。

传统上,每个 SSH 密钥类型仅定义一种哈希算法,并且ssh-rsa密钥在进行签名时始终使用 SHA1 算法。(请注意,这用于签名数据(身份验证挑战),而不是密钥本身。)

最近,由于 SHA1 不再是最先进的(或接近最先进的),因此指定了 RSA 与 SHA256 和 SHA512 的组合,并使用标志字段扩展了 ssh-agent 协议,以请求与平常不同的哈希类型。

对于此连接,您的客户端和服务器已协商应改用基于 SHA512 的签名。但是,当客户端要求 ssh-agent 创建签名时,ssh-agent 忽略了新扩展,而只是返回了基于 SHA1 的签名。通常,当代理只是不支持更新后的协议。

解决方案是升级 SSH 代理。最新版本的 OpenSSH 和 PuTTY 都有与新协议兼容的代理;GnuPG 的 gpg-agent 从 v2.2.6 开始也应该支持此功能。

对 SHA256:前缀与使用 rsa-sha2-512 的消息签名感到困惑。

前缀SHA256:什么也没有与正在制作的签名有关。它指示生成密钥指纹的方法(指纹是公钥的直接哈希值;不是签名)。旧客户端过去使用 MD5 来实现此目的。

显示指纹仅供您参考(指示正在使用哪个密钥),其出现不会影响实际的 SSH 连接。

相关内容