SSH:代理密钥 RSA SHA256:[hash] 返回的签名类型不正确

Dav*_*žan 5 linux ssh debian debian-buster

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

agent key RSA SHA256:[hash] returned incorrect signature type
Run Code Online (Sandbox Code Playgroud)

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

尽管它对成功连接的能力没有任何影响,但我想了解它的确切含义以及如何修复它。

这是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
Run Code Online (Sandbox Code Playgroud)

我是否理解我的 SSH 客户端使用散列算法来签署 SSH 服务器不喜欢的密钥?还是SSH代理?请如何正确配置它以使 SSH 服务器不抱怨?

我不明白什么是预期的,什么是实际使用的,被SHA256:前缀与消息混淆了signing using rsa-sha2-512

use*_*686 9

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

您从 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 都有与新协议兼容的代理;从 v2.2.6 开始,GnuPG 的 gpg-agent 也应该支持这一点。

被 SHA256 混淆:前缀与使用 rsa-sha2-512 的消息签名。

SHA256:前缀有毫无关系做与所取得的签名。它指示生成密钥指纹的方法(指纹是公钥的直接散列;不是签名)。旧客户端曾经为此使用 MD5。

指纹仅作为您的信息显示(以指示正在使用哪个密钥),其外观不会影响实际的 SSH 连接。