今天使用git clone的时候因为没有配置ssh 可是使用了ssh的clone命令,出了点问题。仔细研究了一下,仍是挺有意思的,特地记录下来能给你们带来一些收获。html
git clone分为两种方式,一种是经过ssh,还有一种是经过http(s)。前端
在clone的时候能够选择SSH,首先在命令行输入git
ssh-keygen -t rsa -C “email” //这里 -c是建立别名,通常网站都喜欢用邮箱
一路点击肯定,在本地生成.ssh文件,里面有id_rsa(私钥) id_rsa.pub(公钥),将公钥上传到github上就能够直接免密与github进行文件传输了github
// 本地存在.ssh文件后 // 终端输入 $ cd ~/.ssh/ $ cat id_rsa.pub $ ssh-rsa xxxxxxxxxxxxxxxxxxx yourEmail // 复制上面出现的内容
在gitlab(github)-->我的帐户-->setting-->ssh 将刚复制的公钥粘贴
此时就完成了ssh设置,再clone就是免密的啦。算法
这里要提心一下,这时候clone的格式必定是 git clone git@xxxxxxxxxx
segmentfault
HTTP的方式比较简单,就是 git clone 给定的url,而后输入本身在gitlab(github)上相应的帐号就好了。安全
想要比较他们之间的优缺点,首先要搞清楚为何会这么设计。
我我的认为,项目通常分为两类,一类是团队(我的)的项目,一类是开源的项目。
团队(我的)项目,具备私有性
。同时拉或者推为了方便
都应该不须要验证。这就须要保证数据在传输中的私有与可靠。
因此使用ssh协议(以非对称加密实现身份验证)。
开源项目,具有公有特性
。一方面若是每一个参与者的数据的拉取都进行加密解密的话,代价将会很是大。另一个方面,对于众多提交者,代码应该由管理者去审核是否merge,同时代码也没有必要保持传输过程当中的私有可靠。因此能够采用HTTP明文传输或者HTTPS也能够。服务器
在密码学中,加密(英语:Encryption)是将明文信息改变为难以读取的密文内容,使之不可读的过程。只有拥有解密方法的对象,经由解密过程,才能将密文还原为正常可读的内容。
具体在前端中你至少要明白下面几个概念:
公钥、私钥、RSA、数字证书、https与http的关系、TLS与SSL
我将在本篇文章和下篇文章为你们一一道来网络
对称加密很简单,就是明文通过密钥转化成密文,假若我知道密钥和密文,我也能够推出明文,典型的像是摩尔斯码。因此在谍战片中,咱们常常看到特务找密码本,就是由于有了密码本就能够破译密文了。ssh
在对称加密中,因为是直接传递的密钥,密钥容易被人窃取致使信息泄漏,
人们认识到,加密和解密可使用不一样的规则,只要这两种规则之间存在某种对应关系便可,这样就避免了直接传递密钥。这种加密方式就叫作非对称加密。
1977年,三位数学家Rivest、Shamir 和 Adleman 设计了一种算法,能够实现非对称加密。这种算法用他们三我的的名字命名,叫作RSA算法
。从那时直到如今,RSA算法一直是最广为使用的"非对称加密算法"。绝不夸张地说,只要有计算机网络的地方,就有RSA算法。
在RSA加密算法中,公钥用于对数据进行加密,私钥用于对数据进行解密
在RSA签名算法中,私钥用于对数据进行签名,公钥用于对签名进行验证。
ssh是一个安全协议,以非对称加密实现身份验证。,本机产生id_rsa(私钥) id_rsa.pub(公钥),将公钥上传到github上。pull的时候公钥用于对数据进行加密,私钥用于对数据进行解密,push的时候私钥用于对数据进行签名,公钥用于对签名进行验证。
这里再介绍一个部署项目的方法,好比咱们开发项目,把项目托管到gitlab上,而后当咱们部署项目的时候将本地文件上传到服务器上。说实话这一步仍是比较麻烦的。咱们其实可让gitlab和咱们线上服务器经过ssh链接,当gitlab代码更新到最新版本的时候,服务器上我只须要运行git pull 就能够自动完成文件的拉取、更新以及项目的部署了。
本文从git进行文件传输的两种方式出发,介绍了部分加密的概念,但愿对你们有所帮助。后面将像你们介绍剩余的加密方面的概念