详细解释Github和用户端通过SSH建立连接的过程

server/2025/3/4 14:51:34/

SSH 连接建立的步骤

  1. 你生成一对密钥:公钥和私钥
    你在本地计算机(客户端)上生成一对 SSH 密钥,这对密钥包括:

    • 公钥id_rsa.pub),可以公开分享。
    • 私钥id_rsa),必须保持秘密,仅存储在你的机器上。

    你将 公钥 上传到 GitHub 或其他服务,这样 GitHub 就能识别你,并允许你通过 SSH 进行操作(例如,推送代码、拉取代码)。

  2. 公钥上传到 GitHub

    • 你将公钥添加到 GitHub 上的 SSH and GPG keys 页面。GitHub 通过保存你的公钥来允许验证来自你客户端的连接请求。
  3. 客户端发起连接请求
    当你在 Git 客户端(例如 git pushgit pull)执行命令时,客户端会向 GitHub 发起连接请求。此时,GitHub 会要求你通过 SSH 进行身份验证。

  4. 客户端使用私钥进行身份验证

    • 当连接请求发送到 GitHub 时,客户端会使用它的 私钥 对请求进行签名。
    • 签名过程是生成一个加密的哈希值,这个哈希值表示连接请求的内容。
    • 私钥用于 签署 连接请求,证明这是来自你拥有对应公钥的机器,而不是其他任何人。
  5. GitHub 使用公钥来验证签名

    • GitHub 收到连接请求后,它会查找你上传的 公钥(你在 GitHub 设置中上传的那个公钥)。GitHub 会用这个公钥来 验证 客户端签名的有效性。
    • 公钥是 用来解密签名 的,因为公钥和私钥是成对的。也就是说,只有拥有相应私钥的人才能生成能够被公钥验证的签名。
  6. 验证成功,建立连接

    • 如果 GitHub 能够成功地使用公钥解密签名并验证其有效性,GitHub 就知道你是这个公钥的所有者,身份得到确认。
    • 经过验证后,GitHub 就会允许你执行操作,例如拉取代码或推送代码

白话:”客户端发送请求的时候附带了”个人特征的信息“,由于Github端存储了匹配你的一些个人特征,所以可以直接认出是你“

同一对公私钥,才可以加解密;
背后的数学原理需要自行了解


http://www.ppmy.cn/server/172355.html

相关文章

【网络】十大网络协议

文章目录 1. HTTP(HyperText Transfer Protocol,超文本传输协议)2. HTTPS(Secure Hypertext Transfer Protocol,安全超文本传输协议)3. HTTP/34. TCP(Transmission Control Protocol&#xff0c…

回归算法模型总结

回归算法在数据分析中至关重要,因为它们帮助我们预测连续变量并量化变量间的关系。通过建模复杂的依赖关系,回归算法为决策提供了科学依据,从而支持业务优化和战略规划。 线性回归 岭回归 套索回归 弹性网络 多项式回归 支持向量回归 决…

Node.js setImmediate 教程

Node.js setImmediate 教程 简介 setImmediate() 是 Node.js 环境中的一个函数,用于安排一个回调函数在当前事件循环周期结束后立即执行。它提供了一种在当前操作完成后,但在任何 I/O 事件或定时器触发之前执行代码的方法。 基本用法 setImmediate((…

山东大学计算机网络第一章习题解析

参考教材:计算机网络:自顶向下方法:原书第 8 版 / (美)詹姆斯F. 库罗斯(James F. Kurose),(美)基恩W. 罗斯(Keith W. Rose)著&#xf…

开放鸿蒙认证,OpenHarmony兼容性认证介绍

Ⅰ、OpenHarmony开放鸿蒙兼容性测试认证:使用官方测试套件,对照PCS自检表中的必测项,在本地搭建的环境中对伙伴设备进行预测,直至取得合格的兼容性测试报告。 注:2025年01月01日起,不支持新产品基于老分支…

攻防世界WEB(新手模式)18-easyphp

打开题目,直接开始代码审计 条件1:$a 必须存在,且 intval($a) 必须大于 6000000,同时 strlen($a) 必须小于等于 3。 这意味着 $a 必须是一个字符串,且它的整数值大于 6000000,但字符串长度不能超过 3。这看…

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_open_file

ngx_open_file 定义在src/os/unix/ngx_files.h #define ngx_open_file(name, mode, create, access) \open((const char *) name, mode|create, access)#define NGX_FILE_RDONLY O_RDONLY #define NGX_FILE_WRONLY O_WRONLY #de…

01. HarmonyOS应用开发实践与技术解析

文章目录 前言项目概述HarmonyOS应用架构项目结构Ability生命周期 ArkTS语言特性装饰器状态管理 UI组件与布局基础组件响应式布局样式与主题 页面路由与参数传递页面跳转参数接收 数据绑定与循环渲染数据接口定义循环渲染 条件渲染组件生命周期最佳实践与性能优化组件复用响应式…