(MacOS)Github配置免密登录

提示:其他远程仓库的SSHKey配置步骤都类似,例如:Gitee,GitHub、Gitlab等

一、引言

Git有两种克隆代码的方式:一种是http,另外一种就是SSH。

用http方式拉取的仓库,每次向GitHub仓库推送代码都要输入Git的账号与密码,进行身份验证才可访问,非常麻烦。那么如何才能避免每次推送代码都要输入账号密码呢?

二、免密登陆原理

(1)免密登录机制

Git主机间的通信采用的是SSH协议,即Sercure Shell协议。

该协议的免密登录机制,要求主机之间采用SSH-key,即SSH密钥的方式进行身份验证。

SSH密钥包含“公钥与私钥",所以我们首先要了解什么是“公钥与私钥”,然后还要理解“公钥与私钥”在免密登录中的作用,即免密登录的工作原理。

(2)公钥与私钥

公钥(Public Key)与私钥(Private Key)是通过加密算法得到的一个密钥对(即一个公钥和一个私钥,也就是非对称加密方式)。公钥可对会话进行加密、验证数字签名,只有使用对应的私钥才能解密会话数据,从而保证数据传输的安全性。公钥是密钥对外公开的部分,私钥则是非公开的部分,由用户自行保管。

通过加密算法得到的密钥对可以保证在世界范围内是唯一的。使用密钥对的时候,如果用其中一个密钥加密一段数据,只能使用密钥对中的另一个密钥才能解密数据。例如:用公钥加密的数据必须用对应的私钥才能解密;如果用私钥进行加密也必须使用对应的公钥才能解密,否则将无法成功解密。

(3)免密码登录的工作原理

对于免密登录的机制,主要由两部分构成:构建与验证。

  • 免密登录构建:
    Git版本库所在的主机上生成一对密钥:公钥与私钥,保存到本地主机中。
    Git版本库将公钥及用户信息(用户名,密码等)保存到GitHub上。
  • 免密登录验证:
    1、Git版本库向GitHub发送连接请求,包含Git版本库的用户信息。
    2、GitHub从本地文件中查找是否存连接中包含的用户信息。若不存在:则拒绝访问,若存在:可以访问。
    3、GitHub将加密后的随机字符串,发送给Git版本库。
    4、Git版本库将加密后的随机字符串,使用私钥进行解密。
    5、Git版本库解密后的字符发送给GitHub。
    6、GitHub将接收到的字符串,与本地未加密的字符串进行比较,相同则可以访问,不同则被拒绝。

免密登录原理示意图:

简单的理解:

SSH Key也可以简单的理解为你的身份标识,放在GitHub上面标明你是这个项目的一个开发人员,但是别人可以截获,但是你本机上的私钥无法截获,也就保证了每次传输是安全的。

三、具体配置

1. 配置全局的用户名和邮箱(不是必须)

git config --global user.name "xxx"
git config --global user.email "xxx.com"

2. 打开命令行终端,验证是否有ssh keys,看下返回的结果中是否已经存在了.pub结尾的文件

ls -alh ~/.ssh

如果有.pub结尾的文件直接打开,复制到github上的SSH keys,如果没有就继续执行

2. 使用如下命令生成ssh-keygen密钥,然后一路回车。其中,“邮箱地址”是你的github关联的邮箱。

ssh-keygen -t rsa -C "邮箱地址"

这个时候在默认路径下就生成了两个文件,公钥和私钥。进入主目录下的.ssh文件夹,公钥为id_rsa.pub,私钥为id_rsa。

执行以下命令查看公钥内容,打开id_rsa.pub文件,复制此内容

cat ~/.ssh/id_rsa.pub

3. 点击账户头像后的下拉三角,选择’settings’。

4. 点击’SSH and GPG keys’,添加ssh公钥。

5. 填写标题,粘贴公钥,点击Add SSH key,输入GitHub密码即可

6. 验证GitHub是否链接

ssh -T git@github.com

这样github的ssh就可以链接mac了,可以上传和下载代码了~~

我把解决方案写到了github page里,内容正在佛系更新中,点击此链接可以访问https://salutegf.github.io/Salute_MacOS/#/

Reference

  • https://baijiahao.baidu.com/s?id=1705605704758775994&wfr=spider&for=pc

mac配置免密登陆github相关推荐

  1. Git 详细教程之五:SSH 免密登陆 GitHub

       由于每次 Git 对远程库 GitHub 进行推送(push)等操作时都需要进行登陆验证才可以进行,比较麻烦.本篇博客提供了一种新的链接方式:『Git 详细教程之五:SSH 免密登陆 GitHu ...

  2. Hadoop用户配置免密登陆

    Hadoop用户配置免密登陆, 参考其他免密配置方法自己总结的更简洁的步骤. 要实现A免密登陆B,需要把A生成的公钥放到B的对应目录下, 要实现ABC之间免密登陆,把3者的公钥汇总到一个文件中, 然后 ...

  3. git 配置免密登陆

    SSH免密码登录配置 注意:这些命令需要在git bash here中敲 注意先配置好账户名和邮箱 # git config user.name zhangsan # git config user. ...

  4. 第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

    第六天 - 安装第二.三台CentOS - SSH免密登陆 - hadoop全分布式安装.配置.集群启动 第六天 - 安装第二.三台CentOS - SSH免密登陆 - hadoop全分布式安装.配置 ...

  5. DM8:免密登陆配置

    1.什么是免密登陆?? 使用过oracle的朋友都知道,oracle在安装完之后,一般默认开启操作系统认证登陆,没有密码的情况下,可以通过进入服务器,通过操作系统认证SQLPLUS /  AS SYS ...

  6. linux SSH免密登陆 附带免密登陆脚本

    1.首先修改集群内的映射文件 vi /etc/hosts 在里面最后添加集群内的映射 192.168.43.120 master 192.168.43.121 slave1 192.168.43.12 ...

  7. 基于三台虚拟机配置ssh免密登陆

    目录 一.前提准备 二.配置ssh免密登陆(Hadoop102,hadoop103,hadoop104) 三.配置三台免密登陆 一.前提准备 qian ti z bqian ti zqian tiqi ...

  8. mac mysql 免密登录_Mac 免密登陆

    用ssh-copy-id 1. 首先在你的本地mac上打开一个shell,进入到~/.ssh目录,然后看一下该目录下的文件 cd ~/.ssh ls // 看一下文件,看看有没有已经生成过的公私钥对 ...

  9. ubuntu 18.04配置SSH及免密登陆

    补充下安装环境: ubuntu:18.04.1 putty:Release 0.72 SSH安装 ssh包括server端和client端, ubuntu 18.04已经安装了client端,可以通过 ...

最新文章

  1. [微信小程序]商城之购买商品数量实现
  2. 5.Scrapy与相关应用
  3. 一套Python试题
  4. ipsan虚拟存储服务器,HP P4000 IPSAN存储系统
  5. $_FILES error(笔记)
  6. [JLOI 2012]树
  7. windows之实现3D立体效果的三种方法
  8. [云炬创业学笔记]第三章商业创意的发掘与评估测试4
  9. 卷积云神经网络_2018.10
  10. android 释放bitmap fragment,,为什么重复Replace Fragment会内存泄漏
  11. linux socket 阻塞服务端 非阻塞客户端,linux下异步RPC的阶段性总结-非阻塞SOCKET客户端...
  12. 外媒:伊朗政府封锁加密通讯应用Signal
  13. 使用Gulp来加速你的开发
  14. IDEA连接服务器执行python程序
  15. visual studio插件开发dll类库免加全局缓存处理办法
  16. Ubuntu16.04 安装 VIM 代码自动补全插件 YCM
  17. 31:几何算法--点集的凸包
  18. java微信二维码登录
  19. linux系统微内核,微内核操作系统的定义及用微内核设计的系统,附Linux是单内核结构介绍...
  20. [py练习] 返回朋友名字的list

热门文章

  1. 前端自动化测试框架Jest介绍和使用
  2. 计算机毕业设计ssm校园疫情防控系统u3669系统+程序+源码+lw+远程部署
  3. matlab小波分析毕业设计,基于matlab的小波去噪分析毕业论文
  4. ECC算法推荐参数汇总
  5. 《App Store 审核指南》更新条目一览
  6. ajax和jquery什么关系,jquery和ajax的关系是什么样的?
  7. Android studio安装Genymotion插件步骤
  8. Angular微前端
  9. Linux可以对目录进行硬链接,Linux-硬链接和软链接
  10. 分析ARP攻击与ARP欺骗