参考URL:[Jenkins][Git]ssh原理以及与https的区别 - 疲惫的豆豆 - 博客园

基本概念

密钥对:在非对称加密技术中,有两种密钥,分为私钥和公钥,私钥是密钥对所有者持有,不可公布,公钥是密钥对持有者公布给他人的。
公钥:公钥用来给数据加密,用公钥加密的数据只能使用私钥解密。
私钥:如上,用来解密公钥加密的数据。
摘要:对需要传输的文本,做一个HASH计算,一般采用SHA1,SHA2来获得。
签名:使用私钥对需要传输的文本的摘要进行加密,得到的密文即被称为该次传输过程的签名。
签名验证:数据接收端,拿到传输文本,但是需要确认该文本是否就是发送发出的内容,中途是否曾经被篡改。因此拿自己持有的公钥对签名进行解密(密钥对中的一种密钥加密的数据必定能使用另一种密钥解密。),得到了文本的摘要,然后使用与发送方同样的HASH算法计算摘要值,再与解密得到的摘要做对比,发现二者完全一致,则说明文本没有被篡改过。
加密:是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击。其重点在于数据的安全性。

使用密码登录,每次都必须输入密码,非常麻烦。好在SSH提供了另外一种可以免去输入密码过程的登录方式:公钥登录。

所谓"公钥登录",原理很简单,就是用户将自己的公钥储存在远程主机上。

登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。

以用户TopGun为例,流程如下:

公钥认证流程:

1. Client端用户TopGun将自己的公钥存放在Server上,追加在文件authorized_keys中。

2. Server收到登录请求后,随机生成一个字符串str1,并发送给Client。

3. Client用自己的私钥对字符串str1进行加密。

4. 将加密后字符串发送给Server。

5. Server用之前存储的公钥进行解密,比较解密后的str2和str1。

6. 根据比较结果,返回客户端登陆结果。

这种方法要求用户必须提供自己的公钥。如果没有现成的,可以直接用ssh-keygen生成一个:

$ ssh-keygen

运行上面的命令以后,系统会出现一系列提示,可以一路回车。其中有一个问题是,要不要对私钥设置口令(passphrase),如果担心私钥的安全,这里可以设置一个。

运行结束以后,在$HOME/.ssh/目录下,会新生成两个文件:id_rsa.pub和id_rsa。前者是你的公钥,后者是你的私钥。

小结:

加密和认证,

加密是保证数据传输过程中数据是安全的。

认证是确保请求发起是请求发起方,不是别人。

加密利用公钥的加密和解密的特性;

认证是利用公钥和私钥  签名和验签的特性;

HTTPS 利用 = 公钥加密和私钥解密+对称加密

git SSH协议,利用的公钥和私钥的认证特性,客户端把公钥上传到服务端;客户端发起请求是用私钥签名,服务端利用公钥验签。

Git原理 SSH 公钥 私钥的理解相关推荐

  1. 服务器上的 Git - 生成 SSH 公钥

    https://blog.csdn.net/weixin_41490929/article/details/96476259 服务器上的 Git - 生成 SSH 公钥 生成 SSH 公钥 如前所述, ...

  2. SSH 公钥私钥 详细解释

    记录 . 参考: SSH 公钥私钥_Zen_y的博客-CSDN博客_ssh公钥和私钥 (最好的解释) 生成Git ssh公钥和私钥(ppk)文件_搬砖老阿姨的博客-CSDN博客_ppk文件(最好的生成 ...

  3. Mac系统Git生成ssh公钥

    Mac系统Git生成ssh公钥 在使用Git仓库进行代码管理时,新的电脑上往往需要生成ssh公钥进行匹配,Mac系统生成Git公钥过程如下: 1.检查本机是否已有公钥 在终端中输入如下命令: ? 1 ...

  4. Mac开发配置各种问题记录(安装VSCode、安装postman、安装git、git生成SSH公钥、安装NVM和Homebrew、安装NVM和Homebrew)

    目录 一. 连接公司的VPN 二.安装VSCode 三.解决Mac电脑上无法访问github问题 四.安装postman 五.安装git 六.git生成SSH公钥,克隆项目到本地关联远程仓库 七.安装 ...

  5. 使用ssh公钥私钥登陆服务器并配置Sublime的SFTP通过私钥登陆

    1. 使用ssh公钥私钥登陆服务器 打开gitbash,输入ssh-keygen,然后会给很多的提示信息,包括公钥要存放在哪里等,直接一路回车,只要记住默认存放的文件位置在哪里就可以 打开产生文件的文 ...

  6. mac生成ssh公钥私钥

    打开mac终端,输入: cd ~/.ssh 若如下提示,需要我们创建公钥 在根目录下,输入命令: ssh-keygen , 提示key存储的默认路径.按enter 按enter后,提示输入密码,两次( ...

  7. Git: 生成ssh公钥

    生成 SSH 公钥 大多数 Git 服务器都会选择使用 SSH 公钥来进行授权.系统中的每个用户都必须提供一个公钥用于授权,没有的话就要生成一个.生成公钥的过程在所有操作系统上都差不多. 首先先确认一 ...

  8. Git配置SSH公钥

    1.安装Git 2.安装完成之后,点击桌面右键,选中git bash here 3.配置user.name,user.email(第一次使用) git config --global user.nam ...

  9. GIt创建ssh公钥

    创建ssh公钥 GZ@WorkStation MINGW64 ~/Desktop/新建文件夹 $ git config user.name zhenGZ@WorkStation MINGW64 ~/D ...

最新文章

  1. 百度香港二次上市,12 岁开发者、AI 机器人同台敲响“芯片代码锣”
  2. ORACLE触发器具体解释
  3. Java:Java编程实现导出二维码
  4. 我的世界服务器端口文件夹,我的世界手机版服务器ip端口地址大全
  5. LINUX(Cumulus Linux白盒交换机)开发基础到提高[1]-Cumulus Linux简介
  6. Windows Media Center .MCL文件代码执行漏洞(MS16-059)
  7. Java工作笔记-Spring boot中配置文件加密(Jasypt的使用)
  8. 利用hibernate中的SchemaExport生成数据表
  9. 沉梦云商城系统2.1.7免授权源码+搭建教程
  10. 注意力机制BAM和CBAM详细解析(附代码)
  11. Windows Print Spooler 远程代码执行漏洞(CVE-2021-34527)
  12. A* 寻路算法,matplotlib地图生成
  13. 【医疗影像处理】去除医疗影像中背景的影响2D/3D【numpy-code】
  14. bookstore项目学到的对象
  15. Unity新手开发VR项目
  16. 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
的一半零一个。到第10天早上想再吃时,见
  17. 如何用python计算年龄_用Python写一个能算出自己年龄的小程序
  18. CSR867x 之充电配置开发
  19. PDP-11 计算机
  20. 解决Tuxera试用过期重装问题

热门文章

  1. 4招瑜伽动作搞定含胸寒背
  2. 搜索全部mp3类型文件
  3. Android开机键失灵启动手机的解决办法
  4. 在北京黑马学习Java01
  5. 我的世界中国版怎么更改java_我的世界中国版Java 不删档测试问题指引
  6. 神州信息:激活数据生产力 支撑强农富民
  7. 如何解决直播姬电脑手机转播没有声音的问题
  8. 华为鸿蒙安装酷喵,华为发布智慧屏S系列,首发全新鸿蒙OS
  9. 【t056】智力问答(multiset做法)
  10. RSA 公钥密码系统背后的数学原理