我正在尝试了解 SSH 授权方法的工作原理,因为我正在尝试使用 gitolite 设置 git 服务器。
据我所知,gitolite 将使用 ssh 来授权用户并授予他们对具有个人读写权限的特定存储库的访问权限。但我对授权的工作方式感到困惑。
我在 YouTube 上看过一些视频,他们使用颜色进行类比来解释。如果我理解正确,对于要以秘密方式相互通信的两个人来说,他们需要一个秘密和公钥。
两个人彼此知道公钥,并且为了在彼此之间进行通信,他们同意使用一个公钥。为了建立连接,他们使用相同的公钥加密他们的私钥并将结果发送给对方。当他们收到结果时,他们将私钥添加到该消息中,并且像魔术一样,他们得到了相同的消息。
但我认为我不理解这一点,因为我看不到服务器将如何验证客户端。我知道服务器必须保存将连接到他的客户端的公钥,但他也有私钥?
当客户端尝试连接到服务器时,他发送用他的公钥加密的私钥,服务器使用客户端公钥加密他的私钥并发送给客户端?
服务器如何检查用户是否真的是他?我还读到要解密用公钥加密的信息,只有持有私钥的人才能解密消息。那么如果没有客户端私钥,服务器如何解密客户端发送的消息呢?
如果有人可以向我解释如何使用此公钥和私钥进行身份验证、授权和信息交换,我将非常高兴。