如何知道SSH密钥的长度?

5

如何确定SSH密钥的长度?

最近我在执行git pull时出现了以下错误,

$ git pull
> GitLab: Your SSH key must be at least 2048 bits.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

之前一切都运行良好。

不用猜测(或试错)哪个密钥是罪魁祸首,是否有可能列出我所有SSH密钥的长度?

更新:

  • Only git pull is giving me above error. I.e., my public key is still fine:

    $ ssh -T git@salsa.debian.org
    Welcome to GitLab, @myid-guest!
    
  • The ssh-keygen -lf might not be the answer, as I'm following https://docs.gitlab.com/ee/ssh/, who recommends to use ed25519 as default key, and who also instructs that, to generate a new ED25519 SSH key pair, do ssh-keygen -t ed25519 -C "email@example.com". However, my ssh-keygen -lf reports that

    $ ssh-keygen -lf id_ed25519.pub
    256 SHA256:PO2bk6B...
    
推荐的ED25519 SSH密钥长度应该不止256位。

  1. 列出所有密钥及其大小:https://unix.stackexchange.com/questions/2116/given-keys-in-ssh-authorized-keys-format-can-you-determine-key-strength-easi
  2. 这是ED25519密钥的正确大小,公钥长度为256位,签名长度是公钥长度的两倍。
- gregory
2个回答

15

你可以试试

ssh-keygen -lf keygen.pub

@xpt:我认为它显示正确,因为ED25519只有256位。请参考这篇文章“https://en.wikipedia.org/wiki/EdDSA#performance”,其中提到公钥长度为256位,签名长度是其两倍。 - Shrijan Tiwari
也许你的实例不支持ED25519,你可以回退到RSA。.. https://docs.gitlab.com/ee/ssh/#ed25519-ssh-keys - Shrijan Tiwari
我在遇到那个错误后生成了一对新的ED25519 SSH密钥。由于我的情况比较复杂,花了我一些时间来验证它是否有效。不管怎样,它实际上是有效的。也就是说,2048位的要求仅适用于“RSA”密钥。至于ED25519 SSH密钥,GitLab默认的256位已经足够好了!所以,谢谢! - xpt

0

你可能不小心删除了Gitlab用于认证你的公钥。 我建议你联系他们,否则自己查一下。


@xpt 为什么不尝试重新配置整个 Git 呢?可以尝试使用以下命令:sudo dpkg-reconfigure git。 - user11269100
“2048位”要求是由服务器强制执行的,在salsa.debian.org中已经解释过了。我认为在这种情况下重新配置客户端的git是没有任何帮助的。 - xpt
@xpt 抱歉,我能做到的就只有这么多了。希望你可以解决问题,尝试联系他们的支持团队。 - user11269100
感谢你的帮助,约翰尼。已经有一个完美的解决方案被采纳了,而且在你提出 git 重新配置建议之前就已经有了。所以,我想再次欢迎你来到 SO 网站。你可能会发现它与你习惯的论坛网站不同。 - xpt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接