文章目录

  • 前言
  • 配置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到你自己的仓库或者其他你有权限的仓库!



Github配置ssh key【不用密码访问Github上代码】相关推荐

  1. github配置ssh key密钥的方法

    ssh连接原理 在我们提交代码的时候, github需要用我们账号对应的公钥去解密我们提交的代码,如果能正确的解密说明当前提交代码的用户合法的. 所以在提交代码事先我们的电脑中需要持有一个私钥我们的g ...

  2. window下配置SSH连接GitHub、GitHub配置ssh key

    此经验分两部分: 第一部分介绍:在windows下通过msysGit(Git for windows.Git Bash)配置SSH Keys连接GitHub. 第二部分介绍:在GitHub上创建仓库, ...

  3. Github 配置SSH key 下载项目并关联

    自己的github上有项目,用新的电脑想要下载并关联开发,如何操作? 主要介绍ssh key的方式, ssh key 一旦配好了之后就一劳永逸了,前提是你是项目的拥有者 https的话比较简单,但是每 ...

  4. Windows 环境配置Github 的SSH key

    今天需要将本机编写的代码提交至github 上,但是push 远程分支提示如下错误信: remote: Support for password authentication was removed ...

  5. GitHub如何配置SSH Key

    文章目录 步骤 一.设置git的user name和email 二.检查是否存在SSH Key 三.获取SSH Key 四.GitHub添加SSH Key 五.验证和修改 https://github ...

  6. 解决GitHub未配置SSH key提示错误信息

    git push -u origin master Permission denied (publickey). fatal: Could not read from remote repositor ...

  7. Gitee(码云)、Github同时配置ssh key

    Gitee(码云).Github同时配置ssh key:https://www.jianshu.com/p/161b61d6bae1 转载于:https://www.cnblogs.com/bydzh ...

  8. gitHub设置SSH Key

    原文地址 设置SSH Key 在注册好github账号后,打开你的电脑桌面上的一个文件夹,这就建立了一个本地工作库,在里面点击鼠标右键,找到你的git bash here-点击开,如图所示:进行下面操 ...

  9. linux samba免密码,Ubuntu如何不用密码访问samba服务器

    samba是Linux系统上实现SMB协议的软件,很多用户对samba服务器并不是很了解,不知道Ubuntu能够无密码访问samba服务器,具体该如何实现呢?不妨随小编来详细了解下无密码访问samba ...

最新文章

  1. 【opencv】(8) 傅里叶变换,高通低通滤波器
  2. linux 文件目录
  3. Mckinsey insights!
  4. docker和docker-compose 端口映射
  5. dubbo-admin的编译安装
  6. python模块datetime_Python模块-datetime
  7. unity3d开发记录
  8. AXI仿真之AXI Chip2Chip
  9. java 长方形正方形_JAVA将长方形图片剪裁成正方形。
  10. 一名Java大佬跳槽之旅,离开京东,14面面试经验和收获
  11. Java 切换win10壁纸
  12. 实验十五 Java Swing 图形用户界面程序设计应用
  13. 窥探现代浏览器架构(三)
  14. 奇梦达全面停产 启动破产程序
  15. 微信小程序-如何实现input框输入emoji表情?【亲测有效】
  16. 反病毒引擎设计之虚拟机查毒篇
  17. ArcGIS+python 绘制人口流动OD图
  18. 医师进中级职称是否要考计算机,2018年医师中级职称考试,你必须要过!
  19. chapter6 Hibernate的关联映射
  20. 使用正则表达式匹配AA、AAA、AABB几个相同字符重复出现

热门文章

  1. ​ECCV 2022 | 清华腾讯AI Lab提出REALY: 重新思考3D人脸重建的评估方法
  2. 2020年市政方向-通用基础(施工员)答案解析及市政方向-通用基础(施工员)考试总结
  3. Activiti7工作流引擎-环境搭建及创建数据库
  4. Android FrameWork 系统源码调试
  5. 接口开发任务完成中(待续)
  6. 创建支持多种屏幕尺寸的Android应用
  7. 乐山市计算机学校的董事长是,乐山市计算机学校开学典礼隆重举行
  8. NFT这么香,到底解决了什么问题?
  9. GA/百度统计/Piwik/JYC:网站分析工具的Cookie设置和访次切分规则
  10. 服务器导购:选购服务器应看哪些配置参数