记录一下配置git操做远程仓库时的自动验证,效果以下图:git

本文介绍的是Linux下的配置。Windows上默认已经启用凭证存储和自动验证(依靠wincred实现,之后会使用GCM-Core)。github

准备工做

首先须要Linux系统上安装了dbus或者是gnome-keyring(依赖于dbus),若是可能的话须要安装libsecret,这是一个更现代的用于凭证管理的库。由于咱们须要借助dbus的service才行实现凭证存储:安全

# Ubuntu

sudo apt-get install libsecret-1-0 libsecret-1-dev gnome-keyring

# Arch Linux

sudo pacman -S libsecret gnome-keyring

其次你须要git 2.11+,一次make,pkg-config,gcc等编译工具,能够用下面的命令安装:bash

# Ubuntu

sudo apt install build-essential git pkg-config

# Arch Linux

sudo pacman pkg-config make gcc g++ git

最后,咱们须要获取我的的ACCESS TOKEN,由于GitHub在2021年末将会废除git操做时的密码验证,全部密码验证须要转换为TOKEN验证,密码只能用于帐户自己的登陆。工具

首先咱们要进设置界面,先打开github.com,而后跟着图里的步骤走:测试

而后点红圈里的开发者设置:ui

你会看到这样的界面,上面列出了已经建立的token和建立/删除按钮:加密

下面是如何建立token,这里建议只勾选你须要的权限,好比提交commit等,权限不是越多越好:3d

建立完成后会把token明文显示给你,必定要妥善保存,由于页面一旦关闭/刷新这串token就只有你一我的知道了:code

一旦token遗失或者没用了,就要及时删除,好比我刚刚为了演示而建立的token演示结束就没用了,因此要删除:

有了access token,下面就能够配置自动登陆验证了。

什么是凭证存储

就是字面意思,用某种方式把密码或者token存储起来,在须要的时候能够获取这些被存储的凭证。

git内置了对凭证存储的支持,经过配置进行:

git config --global credential.helper xxx

若是没有设置那么默认不进行存储,这个xxx默认有2个选项:

store 把凭证用明文存储在$HOME目录下,为了安全建议不要设置它

cache 把凭证存储在内存里15分钟,15分钟后删除

除此以外还支持符合接口规范的第三方应用程序:

git config --global credential.helper your-tool

git config --global credential.helper /path/to/your-tool

对于第一种形式,git会去$PATH里找名字叫git-credential-your-tool的程序,在设置的时候不用写出前缀。第二种会直接调用绝对路径指定的程序。

选用第三方工具是理由是安全:这些工具一般会加密你的凭证,而且存储在一个不容易致使恶意访问的地方,另外还能够和系统功能集成。

那么从哪找这么好的第三方管理程序呢?别着急,git自带了。

在Ubuntu系统上,git把这些程序的源码存储在:/usr/share/doc/git/contrib/credential/这里。在Arch Linux上则是/usr/share/git/credential:

上图是Arch Linux上的状况,gnome-keyring和libsecret、netrc是Linux上能够使用的工具。

由于都是源码,因此咱们得先进行编译。

配置

咱们选择libsecret,由于gnome-keyring将来会被废弃。

采用下面的命令编译,以Ubuntu为例子:

cd /usr/share/doc/git/contrib/credential/libsecret

sudo make

# 若是目录所在的文件系统是ext4,xfs,btrfs,还能够用下面的命令禁止对程序的任何修改

sudo chattr +i git-credential-libsecret

你能够把该目录添加进$PATH,而后指定credential.helper:

echo '$PATH=$PATH:/usr/share/doc/git/contrib/credential/libsecret' >> ~/.bashrc

git config --global credential.helper libsecret

或者你不想修改$PATH,能够这样配置:

git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret

这样就大功告成了。

运行

为了测试,咱们随便选择一个本身的项目,先clone到本地,而后作些修改后commit。

只有在修改远程仓库的时候才会进行凭证验证,好比push。一般的过程是这样的:

$ git push origin dev

Username for 'https://github.com': apocelipes

Password for 'https:/apocelipes@github.com':

虽然提示的文字仍然使用的密码,但输入的应该是咱们以前建立的access token。

验证经过后就会把变动push到origin,但配置自动验证后第一次仍然须要输入凭证,而后如今会是这样:

须要为你的密钥环配置一个单独的密码,你也能够选择用户的默认密码,配置完成后凭证就会被安全地存储了。

下次push将不会再验证用户名和凭证,效果和文章开头的图片里同样。

这样自动登陆认证就配置完成了。

参考

linux+git登陆,图解如何在Linux上配置git自动登陆验证相关推荐

  1. linux查看图像大小_如何在Linux上调整一批图像的大小?

    linux查看图像大小 Resizing images on Linux with gThumb is easy. However, I have a batch of images inside a ...

  2. 如何在Windows上使用Git创建一个可执行脚本?

    长话短说,今天介绍如何在windows上使用Git上创建一个可执行的shell脚本. " 首先我们要知道windows上Git默认添加的文件权限是:-rw-r--r--(对应权限值是644) ...

  3. 如何在IDEA上配置使用Git

    如何在IDEA上配置使用Git 一.IDEA对于Git&GitHub的支持 1.IDEA对GitHub和Git的基本配置 案例演示 首先建立一个演示项目(web项目即可),然后建立一个User ...

  4. mac 上配置 git send-email

    背景:周末在家,因工作需要给社区发邮件,但在 mac上配置 git send-email时遇到了很多问题,折腾了两个半小时才搞定,值得记录一下. 在公司内网给社区发邮件时,只需要在所用的 Linux服 ...

  5. 如何在mac上配置Apache服务器

    如何在mac上配置Apache服务器 1. 打开终端,开启Apache: //开启apache:  sudo apachectl start //重启apache:  sudo apachectl r ...

  6. 你们公司还没使用HTTP3?赶紧来补一补,学习一下如何在Nginx上配置HTTP3。

    你们公司还没使用HTTP3?赶紧来补一补,学习一下如何在Nginx上配置HTTP3. NGINX最新版本,已提供对 QUIC 和 HTTP/3的支持,本文介绍一下如何安装与配置 很高兴能在一个特殊的开 ...

  7. 如何在PyCharm上配置Python解释器,以及解决Windows上PyCharm不能识别C:\Users\Me\AppData路径的问题。

    最近遇到这么一个问题.在Windows上安装Python解释器后,我在PyCharm上却不能找到相应的路径.我花了一些时间去解决这个问题,将解决方案记录于此. 1 如何在PyCharm上配置Pytho ...

  8. 怎么在idea上配置Git

    文章目录 怎么在idea上配置git 一.概述 二.配置git 1.Git安装之后需要进行一些基本信息设置 三.idea配置git 怎么在idea上配置git 一.概述 这里不详细说明关于git怎么安 ...

  9. WIN7如何设置默认登陆帐户,不输密码,实现自动登陆-转

    WIN7如何设置默认登陆帐户,不输密码,实现自动登陆   当我们在系统里建立多个帐户之后,每一次开机都会有多个帐户供我们选择,而有些帐户可能不经常用到.这个时候我们就可以设置常用的帐户让它自动登陆或者 ...

  10. linux更换steam目录,如何在Linux上备份Steam游戏数据 | MOS86

    无论您是需要重新安装Linux操作系统,还是只是想确保游戏进度不会丢失数据,备份存储游戏数据就是答案. 您可以制作完整的磁盘映像,也可以使用专用工具. 无论出于什么原因备份游戏数据,您都可以选择以下三 ...

最新文章

  1. APP转让时提示:您必须移除要转让的 App 的所有构建版本和测试员,并清除“测试信息”下的所有信息
  2. 转:Facebook是如何发布代码的
  3. jqueryui autocomplete 控件自定义source检索
  4. [转载]签名、加密、证书的基本原理和理解
  5. 基本概念_程序员基本功——链表的基本概念
  6. arcgis api for flex 开发入门(二)map 的创建
  7. “数据库审计”关键词,重回Google第一位置
  8. angular @ViewChild使用
  9. 【机器学习经典算法源码分析系列】-- 逻辑回归
  10. Spring Boot Redis Cluster 实战干货
  11. TCP的定时器系列 — 零窗口探测定时器(有图有代码有真相!!!)
  12. NLP数据增强方法总结:EDA、BT、MixMatch、UDA
  13. java 并发编程框架
  14. timerfd_create Function not implemented问题
  15. 中科大软件学院第一学期总结
  16. 利用Outlook应用程序接口执行Shellcode
  17. mysql集群和memcached_Memcached 高可用集群架构
  18. Latex 符号(Symbols)
  19. 解决JSP中文乱码问题
  20. 上海校区—给班级女神的Surprise!

热门文章

  1. selenium实现失败重运行
  2. poj 2442 Sequence
  3. 使用Struts2框架开发租房系统(8)
  4. android原生browser分析(一)--Application
  5. hdu3394--Railway(点的双连通分量)
  6. 各种应用程序错误,xx内存地址不能read等报错可能的原因与解决方案
  7. oracle 方案概念
  8. 拓端tecdat|R语言GARCH模型对股市sp500收益率bootstrap、滚动估计预测VaR、拟合诊断和蒙特卡罗模拟可视化
  9. 拓端tecdat|python缺失值处理案例分析:泰坦尼克数据
  10. ubuntua安装chrome_Ubuntu 16.04下安装64位谷歌Chrome浏览器