git 通过 ssh 推送,谁知道私钥?

git push via ssh and who knows the private key?

这是一道概念题。

在设置到 gitbucket/github 的 ssh 连接时,我正在创建一个 ssh 私钥,然后用于创建 public ssh 密钥。

然后我将 public 键添加到 git 存储桶。

因此,由于我的电脑持有私钥,它可以解密来自 gitbucket 的加密消息。

所以我了解 git 克隆的工作原理。

但是 gitbucket 没有自己的私钥,而且我没有将 public 密钥添加到我的计算机,该密钥是由那个(不存在的)私钥生成的。那么 git 应该如何通过 ssh 推送工作???

But gitbucket has no own private key

它不需要私钥,只需要public私钥即可验证你。

一旦 gitbucket 知道谁在联系克隆或推送,它将允许该操作。
对于推送,如果您是要推送到的存储库的所有者,它就可以工作。

gitbucket中的authentication part (ssh/PublicKeyAuthenticator.scala),例如:

由于 public key cryptography 的工作方式,服务器端 (gitbucket) 只需要 public 密钥。