SSH 连接建立的步骤
-
你生成一对密钥:公钥和私钥
你在本地计算机(客户端)上生成一对 SSH 密钥,这对密钥包括:- 公钥(
id_rsa.pub
),可以公开分享。 - 私钥(
id_rsa
),必须保持秘密,仅存储在你的机器上。
你将 公钥 上传到 GitHub 或其他服务,这样 GitHub 就能识别你,并允许你通过 SSH 进行操作(例如,推送代码、拉取代码)。
- 公钥(
-
公钥上传到 GitHub
- 你将公钥添加到 GitHub 上的 SSH and GPG keys 页面。GitHub 通过保存你的公钥来允许验证来自你客户端的连接请求。
-
客户端发起连接请求
当你在 Git 客户端(例如git push
或git pull
)执行命令时,客户端会向 GitHub 发起连接请求。此时,GitHub 会要求你通过 SSH 进行身份验证。 -
客户端使用私钥进行身份验证
- 当连接请求发送到 GitHub 时,客户端会使用它的 私钥 对请求进行签名。
- 签名过程是生成一个加密的哈希值,这个哈希值表示连接请求的内容。
- 私钥用于 签署 连接请求,证明这是来自你拥有对应公钥的机器,而不是其他任何人。
-
GitHub 使用公钥来验证签名
- GitHub 收到连接请求后,它会查找你上传的 公钥(你在 GitHub 设置中上传的那个公钥)。GitHub 会用这个公钥来 验证 客户端签名的有效性。
- 公钥是 用来解密签名 的,因为公钥和私钥是成对的。也就是说,只有拥有相应私钥的人才能生成能够被公钥验证的签名。
-
验证成功,建立连接
- 如果 GitHub 能够成功地使用公钥解密签名并验证其有效性,GitHub 就知道你是这个公钥的所有者,身份得到确认。
- 经过验证后,GitHub 就会允许你执行操作,例如拉取代码或推送代码
白话:”客户端发送请求的时候附带了”个人特征的信息“,由于Github端存储了匹配你的一些个人特征,所以可以直接认出是你“
同一对公私钥,才可以加解密;背后的数学原理需要自行了解