Fedora 33中的ssh错误sign_and_send_pubkey:不支持相互签名

Fedora 33中的ssh错误sign_and_send_pubkey:不支持相互签名

从 centos 迁移到 fedora 33 后,我尝试克隆 git 存储库,然后出现以下错误:

克隆[电子邮件受保护]:abc/myproject.git
克隆到“myproject”...
sign_and_send_pubkey:不支持相互签名
[电子邮件受保护]:权限被拒绝(公钥)。
致命:无法从远程存储库读取。

请确保您拥有正确的访问权限
并且存储库存在。

我检查了权限、密钥,甚至创建了新密钥,但仍然存在错误。

答案1

经过一番谷歌搜索,我在其他相关错误中找到了答案: SSH 不断跳过我的公钥并要求输入密码

新的 openssh 版本 (7.0+) 已弃用 DSA 密钥,并且默认情况下不使用 DSA 密钥(不在服务器或客户端上)。不希望再使用这些密钥,因此如果可以的话,我建议尽可能使用 RSA 密钥。

如果您确实需要使用 DSA 密钥,则需要使用以下命令在客户端配置中显式允许它们

PubkeyAcceptedKeyTypes +ssh-dss

应该足以将该行放入 ~/.ssh/config 中,因为详细消息试图告诉您。

谢谢杰库耶

附录:可以在 /etc/ssh/ssh_config 中添加这一行,但在最后,在 Include 之后,仍然可以工作。

答案2

看起来您正在使用 DSA SSH 密钥,而现代版本的 OpenSSH 默认情况下不支持这些密钥,因为它们不安全。原因如下:

  • OpenSSH 中使用的 DSA 密钥仅限于 1024 位。对于此类算法,这相当于 80 位安全级别,而目前可接受的最低安全级别是 128 位。
  • DSA 密钥只能使用不安全的 SHA-1 算法进行签名。众所周知,SHA-1 非常弱,仅提供 61 位安全性,因此不应再使用它。它非常弱,任何报酬合理的软件开发人员都有能力攻击 SHA-1。

您最好的选择是使用如下所示的内容生成新密钥:

$ ssh-keygen -t ed25519

Ed25519 密钥被认为是目前最好的选择,Mozilla 向所有开发人员推荐。也可以使用 RSA 密钥,但它们的大小应至少为 3072 位,并且您必须通过添加PubkeyAcceptedTypes -ssh-rsa.除非您确定自己知道自己在做什么或者有迫切的需求,否则 Ed25519 密钥是最佳选择。

请注意,Bitbucket 本身不提供任何安全主机密钥算法(仅基于 SHA-1 的算法),因此如果您使用 Bitbucket,最好使用 HTTPS。

相关内容