赞
踩
在 github上配置ssh key很容易,但网上一大堆教程,基本没解释其原理的(配了后下次需要配又忘记步骤),也没有具体操作结果截图?对一些细节问题也没有说清楚。
我们在往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配置公私钥的方式。
git使用SSH配置, 初始需要以下三个步骤
ssh-keygen
,在你本机生成即可)具体操作如下:
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-keygen -t rsa -C "xxx@xxx.com"
//执行后一直回车即可
生成完以后再用第二步命令,查看ssh key
如下图所示,复制该内容
![](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=)
进入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登录安全性由非对称加密保证,产生密钥时,一次产生两个密钥,一个公钥,一个私钥,在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到你自己的仓库或者其他你有权限的仓库!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。