1

当我为 Git 设置计算机时,我会生成一个私有和公共 SSH 密钥。然后我让 GitHub 知道我的公钥是什么。我的理解是公钥可以加密消息,而私钥可以解密它。所以我可以理解 github 是如何通过 SSH 向我发送加密消息的。

但是,我的问题是,当我推送到 GitHub 时,它怎么知道是我在做推送?其他人不能用我的姓名和电子邮件创建自己的 SSH 密钥,然后推送到我的 GitHub 存储库吗?

我怀疑情况是否如此,那么为此采取了哪些安全措施?谢谢!

4

1 回答 1

5

GitHub 有一份您的公钥副本,其中包含的信息不仅仅是您的姓名和电子邮件地址。它有一个独特的指纹,无法通过生成伪造的公钥来复制(至少在没有大规模暴力攻击或一些意想不到的数学突破的情况下是这样)。

ssh 协议的工作方式是,GitHub 会看到一个 ssh 连接,它会根据您的公钥进行身份验证。这种连接只能由拥有您的私钥副本的人创建。

GitHub 没有你的私钥的副本,但它可以验证你有。(这就是公钥密码学的全部内容。)

于 2012-05-16T19:43:36.393 回答