Ubuntu 22.04 升级了 OpenSSH 到8.9,这个版本默认开启 sntrup761x25519-sha512@openssh.com 作为密钥交换(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)中禁用这个算法
1 |
KexAlgorithms -sntrup761x25519-sha512@openssh.com |
同理 diffie-hellman-group16-sha512 和 diffie-hellman-group18-sha512 也应该被禁用,但它们优先级本来就很低。
如果仍然有问题,把Kex Host Key Algorithm也改一下,如改成
1 |
HostKeyAlgorithms ssh-ed25519 |