Github配置ssh key【不用密码访问Github上代码】

文章目录

  • 前言
  • 配置SSH
    • 第一步:检查本地主机是否已经存在ssh key
    • 第二步:生成ssh key
    • 第三步:获取ssh key公钥内容(id_rsa.pub)
    • 第四步:Github账号上添加公钥
    • 第五步:验证是否设置成功
  • 为什么使用SSH就可以不需要用户名和密码了呢?
  • 一些细节问题解释

前言

github上配置ssh key很容易,但网上一大堆教程,基本没解释其原理的(配了后下次需要配又忘记步骤),也没有具体操作结果截图?对一些细节问题也没有说清楚。

  1. 比如为什么每一台电脑都要配?(这个电脑就是你要放代码的机器)
  2. 配了为啥就不用密码了?

为什么要使用SSH

我们在往github上push项目的时候,如果走https的方式,每次都需要输入账号密码,非常麻烦。而采用ssh的方式,就不再需要输入,只需要在github自己账号下配置一个ssh key即可。
另外Github对于用户名和密码的方式已经弃用了,如下图所示:
![](https://img-blog.csdnimg.cn/img_convert/67951b85dc51972f8d0a2c5117d539ee.png#averageHue=#4f442c&clientId=uf0c6bf67-c87c-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u69ead7ab&margin=[object Object]&originHeight=118&originWidth=1019&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=uba13c6e4-4bbf-40ea-aace-b7116c770d3&title=)
你如果想clone一个工程还必须通过SSH配置公私钥的方式。

配置SSH的步骤

git使用SSH配置, 初始需要以下三个步骤

  1. 使用秘钥生成工具生成rsa秘钥和公钥(秘钥生成工具就是ssh-keygen ,在你本机生成即可)
  2. 将rsa公钥添加到代码托管平台
  3. 将rsa秘钥添加到ssh-agent中,为ssh client指定使用的秘钥文件

具体操作如下:

第一步:检查本地主机是否已经存在ssh key

cd ~/.ssh ls 
//看是否存在 id_rsa 和 id_rsa.pub文件,如果存在,说明已经有SSH Key

如下图所示,则表明已经存在
![](https://img-blog.csdnimg.cn/img_convert/8fd99cb1d844ebe2967b35a96db82617.png#averageHue=#040302&clientId=uf0c6bf67-c87c-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=ue2bd703c&margin=[object Object]&originHeight=133&originWidth=613&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=u1db03e2c-68f5-4bfc-9009-18915b4f518&title=)
如果存在,直接跳到第三步

第二步:生成ssh key

如果不存在ssh key,使用如下命令生成

ssh-keygen -t rsa -C "xxx@xxx.com"
//执行后一直回车即可

生成完以后再用第二步命令,查看ssh key

第三步:获取ssh key公钥内容(id_rsa.pub)

如下图所示,复制该内容
![](https://img-blog.csdnimg.cn/img_convert/6d2d9f49f6710352e55cd4ecefc3e1c5.png#averageHue=#584b3c&clientId=uf0c6bf67-c87c-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=ud767c8fe&margin=[object Object]&originHeight=176&originWidth=1020&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=u524d0f27-f585-474c-bd85-79d31e3d191&title=)

第四步:Github账号上添加公钥

进入Settings设置
![](https://img-blog.csdnimg.cn/img_convert/795e587194b76f83f1bbf3595d3298cf.png#averageHue=#c5a98b&clientId=uf0c6bf67-c87c-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=uf46e3e1f&margin=[object Object]&originHeight=1741&originWidth=683&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=u047d0fca-80f9-465b-a84e-2136ef4fe9d&title=)
添加ssh key,把刚才复制的内容粘贴上去保存即可
![](https://img-blog.csdnimg.cn/img_convert/36bcbad1e662181afe1710e649816578.png#averageHue=#fefdfc&clientId=uf0c6bf67-c87c-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u1919bc15&margin=[object Object]&originHeight=875&originWidth=1437&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=ucbf61e69-6fa7-40b9-b87a-c27de14cbd4&title=)

第五步:验证是否设置成功

显示如下信息表明设置成功
![](https://img-blog.csdnimg.cn/img_convert/51563860957bd0d723db66184acfd247.png#averageHue=#131110&clientId=uf0c6bf67-c87c-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u25376cd1&margin=[object Object]&originHeight=278&originWidth=1977&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=u6128e7d5-95fb-400f-9486-b6e6c78f26e&title=)
设置成功后,即可不需要账号密码clone和push代码

第六步:克隆代码

注意之后在clone仓库的时候要使用ssh的url,而不是https!
![](https://img-blog.csdnimg.cn/img_convert/e4474ac6a20a4eb3cecf3db79c32c09a.png#averageHue=#e0e4cb&clientId=uf0c6bf67-c87c-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u960dca15&margin=[object Object]&originHeight=284&originWidth=1014&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=ub5c9b1b9-39c7-416c-b9b0-7b7f3aaf941&title=)

![](https://img-blog.csdnimg.cn/img_convert/90c1470d2a356e1c099c6972bbfbacbf.png#averageHue=#0b0804&clientId=uf0c6bf67-c87c-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u2fa062a9&margin=[object Object]&originHeight=178&originWidth=610&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=udffb4463-0802-4cdc-819b-509f32b525b&title=)

为什么使用SSH就可以不需要用户名和密码了呢?

SSH登录安全性由非对称加密保证,产生密钥时,一次产生两个密钥,一个公钥,一个私钥,在git中一般命名为id_rsa.pub, id_rsa。
那么如何使用生成的一个私钥一个公钥进行验证呢?
准备:本地生成一个密钥对,其中公钥放到远程主机,私钥保存在本地

  • 当本地主机需要登录远程主机时,本地主机向远程主机发送一个登录请求
  • 远程收到消息后,随机生成一个字符串并用公钥加密,发回给本地。
  • 本地拿到该字符串,用存放在本地的私钥进行解密
  • 再次发送到远程,远程比对该解密后的字符串与源字符串是否等同,如果等同则认证成功。

具体流程图如下所示:
![](https://img-blog.csdnimg.cn/img_convert/51c537f91864a81359d5111813b33ed9.png#averageHue=#f5f5f5&clientId=uf0c6bf67-c87c-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u61e638ba&margin=[object Object]&originHeight=668&originWidth=1415&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=u33cf0479-f2e2-47a6-b685-2ad948e73d2&title=)

一些细节问题解释:

(1)配了后可以有哪些方便? 配了后clone和push代码的时候不需要反复输入自己的github账号密码,更方便(另外github现在不支持用户名和密码方式) (2)每使用一台主机都要配? 每一台都需要配,每使用一台新主机进行git远程操作,想要实现无密,都需要配置(按照上面"配置SSH的步骤"命令执行)。
具体原理可以看下图,公私钥是配对的,每台本地机器都有自己私钥,解密的时候都用自己的私钥:
![](https://img-blog.csdnimg.cn/img_convert/45faa332ea8d5f9a96aaf2e76b234acb.png#averageHue=#f6f6f6&clientId=uf0c6bf67-c87c-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=ub3bf8528&margin=[object Object]&originHeight=854&originWidth=1254&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=u0a43c217-5c0b-4a87-a751-07dd43663d7&title=)
(3)配了为啥就不用密码了? 因为配置的时候是把当前主机的公钥放到了你的github账号下,相当于当前主机和你的账号做了一个关联,你在这台主机上已经登录了你的账号,此时此刻github认为是该账号主人在操作这台主机,在配置ssh后就信任该主机了。所以下次在使用git的时候即使没有登录github,也能直接从本地push代码到远程了。
当然这里不要混淆了,你不能随意push你的代码到任何仓库,你只能push到你自己的仓库或者其他你有权限的仓库!



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值