git push通过ssh和谁知道私钥?

git push via ssh and who knows the private key?

这是一个概念性问题。

当建立到gitbucket/github的ssh连接时,我正在创建一个私有ssh密钥,然后用于创建公共ssh密钥。

然后我将公钥添加到gitbucket。

因此,当我的计算机持有私钥时,它可以解密来自gitbucket的加密消息。

所以我理解例如Git克隆是如何工作的。

但是Gitback没有自己的私钥,我没有向我的计算机添加由该(不存在的)私钥生成的公钥。那么Git应该如何通过ssh推送工作呢????


But gitbucket has no own private key

它不需要私人密钥,只需要公共密钥就可以对您进行身份验证。

一旦Gitback知道谁在联系克隆或推送,它将允许操作。对于推送,如果您是要推送的回购的所有者,那么它会起作用。

GitBucket中的认证部分(ssh/PublicKeyAuthenticator.scala部分),如:

  • 用于检索用户名的src/main/scala/model/SshKey.scala
  • 用于存储用户名和公钥的src/main/scala/service/SshKeyService.scala

由于公钥加密的工作方式,服务器端(GitBucket)只需要公钥。