Ubuntu 22.04 升级了 OpenSSH 到8.9,这个版本默认开启 [email protected] 作为密钥交换(KEX)方法。这个算法使用 512 bit 的 hash。

如果客户端和服务端都升级到了8.9或以上,则成功协商使用这一KEX算法,这时如果使用 gpg-agent 的 SSH 功能签名则会报 agent refused operation。

打印 gpg-agent 的日志可看到报错为 Provided object is too large。

解决方法是在客户端(~/.ssh/config)或服务端(/etc/ssh/sshd_config)中禁用这个算法

同理 diffie-hellman-group16-sha512 和 diffie-hellman-group18-sha512 也应该被禁用,但它们优先级本来就很低。

如果仍然有问题,把Kex Host Key Algorithm也改一下,如改成