由Git的SSH公钥到非对称加密

Git协议

Git主要使用四种协议来进行数据的传输:

1)本地传输

2)Git协议

3)SSH协议

4)HTTP协议

其中SSH协议和HTTP协议是最常见的两种协议了。

SSH协议则是唯一同时支持读写操作的协议,很多企业内部在架设Git服务器的时候,都会提供SSH协议来传输数据。

SSH协议的安全性体现在其使用了公钥加密,而其实用性和安全性的另外一个体现,则是提供了公钥登陆的机制。

只要将我们的公钥放上服务器,由Git服务器进行管理,我们就不用每一次推送都要输入密码,方便了我们的推送操作。

在GitLab或者CSDN的Code上面,都有一个SSH公钥管理页面,如下:

那么SSH公钥到底是什么,为什么要添加SSH公钥呢,怎么生成SSH公钥呢?

希望能通过这一篇文章,将我理解的学习到的知识跟大家分享一下。

公钥私钥,是非对称加密中的概念,是相对于对称加密而言的。

所谓加密,就是将人人都能看懂的内容变成了莫名奇妙的内容,但是你跟我能够去解读它,而其他人则不行。

这就等于给内容加上了一把锁。

对称加密

而你跟我,手上都有一把钥匙,所以我们都能去打开这把锁,从而看到里面的里容。那么这把钥匙,就是对应的密钥。

比如下面这个例子:

我:wygdlkd pejf ktqn 。
你:。。。
我:五笔!
你:哦!

在这里,“五笔”就是一种密钥。你只要知道了这个密钥,你马上就能够知道我在说什么了。

如果加密解密都是用同一个密钥,就叫做对称加密。

不过在网络传输中,如果你不把这个密钥也传给对方的话,对方也就无法知道你在说什么了。

但如果你将密钥也通过网络传输出去,密钥就有可能被别人截取,那么你的内容也就有可能被破解了。

非对称加密

而在非对称加密中,则会产生一对密钥,比如说KeyA和KeyB,满足下面两条规则:

1)用KeyA加密过的内容,只有KeyB能够解密。

2)用KeyB加密过的内容,则只有KeyA能够解密。

而我们会将其中一个密钥(比如KeyA)公开给外面的人使用,这就叫公钥。

另外一个密钥(比如KeyB)则由自己私人保存着,这就叫私钥。

我们假设每个人都有这样一对公钥跟私钥,我们都知道彼此的公钥。

那么,如果我要传数据给你,我就会拿你的公钥来对这些数据进行加密。这样,这些加密过的数据就只有你能解开了,因为只有你有私钥。

同样的,如果你要传数据给我,你就可以拿我的公钥来加密,然后再传给我,这样也不怕别人截取,因为它们也解不开。

利用非对称加密的公钥私钥,我们就可以只传输数据,而不用去传输解密的密钥,从而避免了对称加密的不足。

SSH的安全性就在于其利用了公钥加密这种机制。

身份验证(数字签名)

上面所说的,是用公钥加密来保证数据在传输中的安全性。而用私钥加密则可以帮助我们进行一个身份的验证,而这也就是SSH公钥登陆的原理。

根据非对称加密的规则,用其中一个密钥加密的数据只有另外一个密钥才能解开。

也就是说,如果我收到你传过来的一份数据,能够用你的公钥解开,这说明,这数据是用你的私钥来加密的,而这个私钥只有你一个人有,那么就说明这份数据的确就是你的。

这就正好验证了你的身份。

Git服务器的SSH公钥管理机制正是利用这一点来实现身份的检查了。

1)首先我们会将公钥保存在Git服务器上。

2)当客户端连接Git服务器的时候,服务器会随机生成一串字符串,并将其传送给客户端。

3)我们的私钥是保存在本地的。当客户端收到服务器传回来的随机字符串的时候,客户端会利用本地的私钥进行加密,并将加密后的数据传回给服务器。

4)服务器收到客户端加密的数据,会利用该用户事先存储的公钥进行解密,如果解密成功,并且跟原先的字符串一致,则验证了该用户的身份,连接建立。

上面这几步,其实就是SSH公钥登陆的机制。

而从其他的角度来说,这种利用私钥加密的过程,其实就是在对数据进行签名,所以也叫数字签名。

生成SSH公钥

我们可以利用ssh-keygen命令来生成一对密钥:

passphrase是对使用这个密钥的密码,可以留空,也可以输入。

而命令完成之后,就会在当前目录下生成一对key,其中以.pub结尾的文件,则是我们对应的公钥了,可以将其放到Git服务器上了。

关于非对称加密,其实还涉及到很多其他方面的知识,比如我现在想传一些数据给你,想拿你的公钥来加密,但是我应该去哪拿你的公钥呢?我又怎么知道我拿到的公钥就真的是你的呢?这就涉及到CA证书机构等方面的知识了。。。

结束。

由Git的SSH公钥到非对称加密

时间: 2024-10-28 04:35:35

由Git的SSH公钥到非对称加密的相关文章

Mac系统Git生成ssh公钥

Mac系统Git生成ssh公钥 在使用Git仓库进行代码管理时,新的电脑上往往需要生成ssh公钥进行匹配,Mac系统生成Git公钥过程如下: 1.检查本机是否已有公钥 在终端中输入如下命令: ? 1 $ cd ~/.ssh 2.如果电脑中有以前遗留的密钥,将其删除掉 使用如下命令: ? 1 2 3 $ mkdir key_backup $ cp id_rsa* key_backup $ rm id_rsa* 3.生成新的公钥 终端中输入如下命令 ? 1 $ ssh-keygen -t rsa -

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

http://git-scm.com/book/zh/ch4-3.html 生成 SSH 公钥 如前所述,许多 Git 服务器都使用 SSH 公钥进行认证. 为了向 Git 服务器提供 SSH 公钥,如果某系统用户尚未拥有密钥,必须事先为其生成一份. 这个过程在所有操作系统上都是相似的. 首先,你需要确认自己是否已经拥有密钥. 默认情况下,用户的 SSH 密钥存储在其 ~/.ssh 目录下. 进入该目录并列出其中内容,你便可以快速确认自己是否已拥有密钥: $ cd ~/.ssh $ ls aut

Git: 生成ssh公钥

生成 SSH 公钥 大多数 Git 服务器都会选择使用 SSH 公钥来进行授权.系统中的每个用户都必须提供一个公钥用于授权,没有的话就要生成一个.生成公钥的过程在所有操作系统上都差不多. 首先先确认一下是否已经有一个公钥了.SSH 公钥默认储存在账户的主目录下的 ~/.ssh 目录.进去看看: $ cd ~/.ssh $ ls authorized_keys2  id_dsa       known_hosts config            id_dsa.pub 关键是看有没有用 some

Git之SSH公钥与私钥

今天来探讨一下如何使用Git的操作,来进一步的实现代码的下载到本地,我原来也不是很明白git中生成公钥和私钥的作用,我一直在想,git里面你把自己的公钥发给了git的服务器,他是怎么判断的,每一次我换完系统,在重新装机,他是怎么确定是换完系统还是依然可以使用git的,今天我们就来讲解一下最为简单的SSh的方法的clone项目的操作: 1.下载git的客户端(只作用于upload&download) 2.无脑安装 3.打开Git Bash,然后生成新的秘钥: $ ssh-keygen -t rsa

git生成ssh公钥方法--远程连接github仓库

先配置全局的用户名和邮箱 $ git config --global user.name "runoob" $ git config --global user.email [email protected] 生成公钥命令 #1.cd到当前用户加目录下 cd ~ #2.生成公钥文件 ssh-keygen -t rsa -C 'youremal' #3.查看你的公钥 cat .ssh/id_rsa.pub 将公钥添加到git设置中 1. 2. 3. 原文地址:https://www.cn

Git - 生成 SSH 公钥

1.首先检查本机是否存在ssh key $ cd ~/.ssh $ ls 有则备份删除,没有则提示不存在 2.设置git的邮箱和用户名 $ git config --global user.name "用户名" $ git config --global user.email "邮箱" 3.生成密钥 $ ssh-keygen -t rsa -C "邮箱" 然后按3个回车即可,最后得到了两个文件:id_rsa和id_rsa.pub 4.复制key值

SSH HTTPS 公钥、秘钥、对称加密、非对称加密、 总结理解

DES: Digital Encryption Standard. Obsolete standard. 单密钥算法,是信息的发送方采用密钥A进行数据加密,信息的接收方采用同一个密钥A进行数据解密. 单密钥算法是一个对称算法. 算法好在加/解速度快,密钥量短,采用对称加密 DSA: Digital Signature Algorithm. based on discrete logarithms computation. 用于签名 RSA: RSA 是一种非对称加解密算法. RSA 与 DSA

非对称加密 - SSH, HTTPS

你想用实际生活中的例子懂"非对称加密"吗, 请点击知乎优秀解答"非对称加密", 一看就懂!!! 看完上面形象的解释后, 再看这个总结性的概括https://www.zhihu.com/question/33645891/answer/57512229 然后使用中明白三点就够了: 双方都能知道公钥, 公钥就是[数字证书] 公钥用来加密, 私钥解密信息 公钥用来解密, 私钥加密信息 SSH, HTTPS用的就是非对称加密

非对称加密和ssh免密登陆验证、邮件发送接收、网站CA证书验证

非对称加密,就是rsa,会生成一个公有钥匙和一个私有钥匙,一般用于加密数据量较小的数据,如果是公钥加密,则必须用私钥解密,如果用私钥加密,就必须用公钥解密,所以,要验证你是你自己的时候,别人可以把用你的公钥加密的数据给你去解密,如果你的私钥解密成功,就完成了验证, 如果你要验证对方是不是你的认定对象时,拿到他用私钥加密的数据,然后用自己有的认定对象的公钥去解密,如果解密成功,验证通过.(被验证方总是用自己的私钥加密或解密一段数据)(“我只发给你,我只给你看的时候,就用对方的公钥加密发过去”) 例