为什么GitHub推荐ed25519 SSH密钥加密方案,但本身却使用ECDSA?

为什么GitHub推荐ed25519 SSH密钥加密方案,但本身却使用ECDSA?

GitHub 指南生成新的 SSH 密钥并将其添加到 ssh-agent建议在配置用于连接 GitHub 的 SSH 密钥时使用 ed25519,但如果您通过 SSH 连接到 github.com,您会看到主机密钥是 ECDSA 类型(见下文)。为什么他们不对服务器证书使用他们推荐的客户端证书相同的加密类型?

user@computer:/$ ssh -T [email protected]
The authenticity of host 'github.com (140.82.114.3)' can't be established.
ECDSA key fingerprint is SHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM.

答案1

首先,ECDSA 和 Ed25519(EdDSA)都不是加密方案或算法;它们都是 SSH 中用作主机身份验证(又名主机密钥)算法或方法以及“用户”身份验证的签名算法(或方案)。

github.com拥有所有三种当前可接受的主机密钥类型,大概是为了实现最大程度的互操作性(特别是因为这样做不需要花费任何成本):

$ for t in ed25519 ecdsa rsa; do ssh-keyscan -t $t 2>/dev/null github.com; done
github.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl
github.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg=
github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==

对于给定的连接使用哪一个取决于客户端(即您的ssh程序)的功能和偏好。如果您使用的是 OpenSSH(它不是 SSH 的唯一实现,也不是唯一名为 的程序ssh,尽管我认为它在 githubians 中最为常见,他们几乎按照定义都是 FOSSites)版本 6.5 到 8.1 优先使用 ecdsa 然后是 ed25519(除非使用不支持 ECC 的 OpenSSL 版本,或者根本不使用 OpenSSL);只有 8.2 以上版本优先使用 ed25519。您可以使用 egssh -oHostKeyAlgorithms=ssh-ed25519 ...或等效的配置设置覆盖它,请参阅手册页。

相关内容