最近在使用阿里云效平台代码管理,首次使用新建仓库,使用SSH时需要配置公钥。之前也在GitHub、Gitee上配置过,每次都能正常使用,也没有思考过为什么要配置公钥。这次记录一下其中的原理。

本地和远程仓库通信时,需要认证、加密,如果每次pull、push时都输入密码会十分麻烦。

使用SSH则仅需将本机生成的公钥配置到远程仓库中,上传代码时,本机使用私钥加密,远程仓库使用我们配置的公钥解密验证。这样可以实现认证的功能。

公钥登录

  公钥登录是为了解决每次登录服务器都要输入密码的问题,流行使用RSA加密方案,主要流程包含:

    1、客户端生成RSA公钥和私钥

    2、客户端将自己的公钥存放到服务器

    3、客户端请求连接服务器,服务器将一个随机字符串发送给客户端

    4、客户端根据自己的私钥加密这个随机字符串之后再发送给服务器

    5、服务器接受到加密后的字符串之后用公钥解密,如果正确就让客户端登录,否则拒绝。这样就不用使用密码了。

公钥和私钥:

  1. 一个公钥对应一个私钥。
  2. 密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。
  3. 如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。
  4. 如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。

RSA算法(非对称加密)的作用:

一、加密:公钥加密私钥解密

  主要用于将数据资料加密不被其他人非法获取,保证数据安全性。使用公钥将数据资料加密,只有私钥可以解密。即使密文在网络上被第三方获取由于没有私钥则无法解密。从而保证数据安全性。     

  1. A在自己电脑上生成RSA钥匙文件,一个私钥文件一个公钥文件,并将他的公钥传送给B。
  2. 此时B要传送信息给A,于是B用A的公钥加密他的消息,然后传送给A。【网络上传输的密文,没有A的私钥无法解密,其他人获取之后也没用】
  3. A用他的私钥解密B的消息。

二、认证:私钥加密公钥解密

  主要用于身份验证,判断某个身份的真实性。使用私钥加密之后,用对应的公钥解密从而验证身份真实性。

A要验证B是否是真实用户

   1、B将自己公钥给A(在远程仓库添加我们的公钥)

   2、B将文件用自己私钥加密传送给A

   3、A根据B的公钥解密,如果成功则为真实身份用户

和https有些相似,但没有CA认证中心(在远程仓库添加我们的公钥这个操作类似给远程颁发证书,并达到验证身份的作用,而CA只是达到加密作用)

参考:https://www.cnblogs.com/fengfengyang/p/15519311.html

最新文章

  1. ADO.NET数据访问技术
  2. Linux IPC socket编程基础
  3. sbt assembly build.sbt content
  4. 如何在Xcode6中添加空模板
  5. 《APUE》第四章笔记(4)
  6. poj 2184 Cow Exhibition
  7. JZ2440开发笔记(4)——设置静态IP
  8. Unicode 字符集及UTF-8 UTF-16编码
  9. 組裝工廠設置IQC的目的
  10. python命令行解析工具argparse模块【4】
  11. MySQL备份利器-xtrabackup的介绍和原理(附脑图)
  12. Linux上程序调试的基石(1)--ptrace
  13. 【转】解决keepalived正常启动但是虚IP(VIP)没有生成的问题
  14. matplotlib坐标轴设置续-【老鱼学matplotlib】
  15. TypeScript基础类型,类实例和函数类型声明
  16. 【bzoj 3779】重组病毒
  17. ELK学习笔记之F5利用EELK进行应用数据挖掘系列(2)-DNS
  18. 【jmeter】jmeter聚合报告之90%Line参数说明
  19. 关于一道JS面试题的思考
  20. matlab histeq函数介绍

热门文章

  1. python推导式特殊用法
  2. 【微服务】- 服务调用 - OpenFeign
  3. 24_Java8
  4. 使用SqlDataReader对象从数据库中检索只读的数据。
  5. uoj316【NOI2017】泳池
  6. Vue学习之---浏览器本地存储(8/17)
  7. NAS数据存储之NFS搭建和使用
  8. 一篇文章带你了解服务器操作系统——Linux简单入门
  9. C# Static关键词的使用
  10. Dubbo-聊聊通信模块设计