GitHub的认证过程(一)
来源:互联网 发布:游族网络实时资金流向 编辑:程序博客网 时间:2024/06/04 19:58
最近在看Uncle Bob的《敏捷软件开发 原则、模式与实践》。我看技术书籍时有一个习惯:先粗看一遍书中的示例代码,了解代码实现的功能,然后把代码根据自己的理解重写一遍,最后再对比一下自己代码和书中示例代码的区别,从中找出差异并结合作者的论述进行分析。这三个步骤是了解作者思路->自发思考->归纳总结的过程,可以把作者书中的内容经过思考消化为自己掌握的知识,而不只是“知道”这本书。
为了在家里和公司都可以方便地访问,我使用了最近很流行的GitHub来保存自己的练习代码。在网上有很多GitHub的介绍,GitHub主页上的Step by Step帮助也很详细,根据这些资料,我很快就搭建好了GitHub环境。
GitHub采用SSH来对客户端进行认证。首先需要设置密匙。设置密匙的操作步骤如下:
1、在客户端生成密钥对
$ ssh-keygen -t rsa -C zhaohuabing@gmail.com
生成的密钥对保存在本地根目录的.ssh目录下的两个文件中
私钥:id_rsa
公钥:id_rsa.pub
2、将公钥的内容添加到GitHub的Account Settings->SSH Keys中
3、然后就可以对GitHub进行提交代码、更新代码等操作了。
我有一个缺点,在做一件事的时候,注意力会很容易被和该事情相关的细节吸引,如果自己对该细节感兴趣的话,就会顺着该细节深挖下去,常常忽略了自己最初的目的。我美其名曰:发散式学习,呵呵。 现在我开始对GitHub的认证机制感到好奇,GitHub是如何确认我的本地计算机具有操作权限的呢?
这事儿问google比较靠谱。我先通过google到的这两个网页学习了加密机制的一些基础知识。
双匙加密体系介绍
电子签名和数字证书
很明显,GitHub在用户认证过程中采用了双匙机制,在双匙加密机制中,只有合法用户才拥有私匙,只要GitHub在收到请求时可以证明提交请求的客户端上拥有该私匙,即可以确认该操作是由合法用户发起的。
GitHub如何能够确认提交请求的客户端计算机上拥有该私匙呢?我推测可能是这样一个过程:
1、客户端向GitHub主机发起请求,请求中包含了GitHub用户名
2、GitHub主机通过用户名查找到该用户在Account Settings中设置的公匙
3、GitHub主机生成一段随机信息, 使用用户的公匙加密后返回给客户端
4、客户端使用私匙解密GitHub主机返回的信息
5、客户端把解密后的信息返回给GitHub主机
6、GitHub主机对比客户端返回的解密信息和原始信息,符合则说明本地计算机拥有私匙,即验证了客户端的身份。
- GitHub的认证过程(一)
- GitHub的认证过程(二)
- sip的认证过程
- OAuth认证的过程
- TPM的认证过程
- shiro认证的过程
- CheckPoint的用户认证支持(一)
- CAS认证(2):认证过程
- GitHub(一)初识GitHub
- Oauth认证过程的认识
- 用户认证(一)
- shiro 认证(一)
- github的简单使用(一)
- Github的使用笔记(一)
- 基于认证的入侵(一)
- GitHub教程(一)
- GitHub使用(一)
- GitHub尝鲜(一)
- Android培训班(89)内核解压过程2
- java学习4--Java 的常用包与数组的复制与排序
- fwrite和fread应用
- 非对称加密算法
- C# 网络编程“由于目标机器积极拒绝,无法连接。。”的原因
- GitHub的认证过程(一)
- 添加Linux系统调用
- 单元测试与功能测试的形象比喻
- C#中Clone方法的链式继承复制实现
- JS经典小游戏(无名,能抓住我吗)
- http://localhost:8080/web/X.jsp 报错404
- java web服务器中的 request和response
- Webkit for Android分析
- Ruby中全局变量,实例变量,局部变量,类变量,Symbol对比