文章目录

  • 简介
  • 背景介绍
  • 创建令牌
  • 使用令牌
  • 缓存令牌
  • 使用GCM
  • 总结

简介

最近在更新github文件的时候,突然说不让更新了,让我很是困惑,原因是在2021年8月13号之后,github已经不让直接使用账号名密码来登录了,必须使用personal access token。今天给大家讲解一下怎么对这个token进行缓存。

背景介绍

github为了安全性考虑,在2020年7月就准备对所有需要使用身份认证的git命令切换成基于令牌的身份验证。并且从2021年8月13日开始,在 GitHub.com上对Git操作进行身份验证时将不再接受帐户密码。

这个改动只对使用用户名密码进行github交互的用户受影响。如果你使用的是SSH,或者之前就使用的是令牌,或者使用的是GitHub Desktop,那么不会有任何影响。

github做出这个决定主要是对于安全的考虑,明文的密码很容易被泄露,如果换成有时限的token,即使泄露了影响也会非常有限。

并且可以为同一个github账号根据不同的使用途径,生成不同的token,并且随时都可以控制token的有效状态和不同token代表的权限。最大限度的保证账号的安全性。

生成的token可随时撤销,并且令牌的随机性更高,不容易被暴力破解。

创建令牌

令牌,英文名叫做token,个人访问令牌英文简写为PAT。它是一种使用密码对 GitHub 进行身份验证的替代方法。

你可以将token看做是密码,不过这个token具有权限和有效时间的限制。同时为了安全起见,GitHub 会自动删除一年内未使用的个人访问令牌。 为了保证令牌的安全性,我们强烈建议为个人访问令牌添加过期时间。

要使用令牌首先需要创建令牌。怎么创建令牌呢?

首先登录github.com,在我的账号下方,选择settings:

然后在左侧边栏中,点击开发人员设置:

然后选择左边的个人访问令牌:

点击生成令牌按钮,就可以生成令牌了。

在创建过程中,我们需要输入和选择一些数据:

比如我们需要给这个token起个名字,用来区分不同的使用场景,还要选择一个过期时间,为了安全起见,这个过期时间不要太长。

最后,就是token对应的权限了,如果你只是对repository进行操作,选择repo即可。

这样一个令牌就创建好了。

注意,创建好的令牌需要及时保存,因为后续也不能再从网页上查看该令牌的内容。令牌的保存需要和密码的保存一样注意安全。

使用令牌

上面我们提到了,令牌就相当于密码,比如我们在拷贝一个需要密码的repository使用输入你的用户名和token就可以正常操作了。

$ git clone https://github.com/username/repo.git
Username: your_username
Password: your_token

但是如果每次都需要输入密码就太麻烦了。下面讲解一下怎么在git中缓存令牌。事实上令牌跟密码是等价的,在git中缓存密码的方式同样适用于缓存令牌。

缓存令牌

通过设置credential.helper的缓存方式,可以对密码进行缓存。

通常来说有两种方式,一种是cache,一种是store。

cache是将密码放在内存中一段时间,密码不会存放在磁盘中,过一段时间会自动从内存中清除。

通过使用下面的命令,可以开启cache:

git config --global credential.helper cache

对于store来说,它接收一个文件的路径,用来存储密码文件。默认存放的路径是~/.git-credentials,可以通过指定–file来修改:

git config --global credential.helper 'store --file /data/git/.git-credentials'

如果你使用的mac系统,mac提供了一个osxkeychain的东西,可以将密码存储到你的系统用户的钥匙串中。这种方式更加优雅,首先密码是加密保存的,另外其管理起来也非常方便,还有可视化的界面。

当然你也可以从命令行将github的存储密码进行删除:

$ git credential-osxkeychain erase
host=github.com
protocol=https
> [Press Return]

如果你在windows机子上,那么可以安装一个叫做““Git Credential Manager for Windows”的工具,它是一个和osxkeychain类似的东西。

使用GCM

上面介绍的存储方法都已经过时了,现在github推荐使用Git Credential Manager Core (GCM Core) 来对你的客户端凭证进行管理。

通过使用GCM Core,根本不需要创建和储存PAT,全部都有GCM Core来代表你进行管理。

怎么安装GCM呢?下面是在mac上安装的过程:

首先安装git:

brew install git

然后安装GCM Core:

$ brew tap microsoft/git
$ brew install --cask git-credential-manager-core

在下次你clone需要使用身份验证的HTTPS URL时,Git将会提示你使用浏览器窗口登录,通过授权OAuth应用程序,实现GCM Core对凭证的管理功能。

成功通过身份验证后,你的凭据将存储在macOS钥匙串中,并且每次克隆HTTPS URL时都会使用钥匙串中的凭证。 Git不会要求你再次在命令行中键入凭据,除非你更改凭据。

GCM Core同样可以在windows和linux环境下使用。

总结

通过生成新的token,并更换现有的缓存密码,最终我的github又可以重新提交了,赞!

本文已收录于 http://www.flydean.com/05-git-personal-access-token/

最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!

欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!

使用账号密码来操作github? NO!相关推荐

  1. 小心,你的账号密码可能在 GitHub 上裸奔!

    公众号关注 "GitHubDaily" 设为 "星标",每天带你逛 GitHub! 去年,疑似 "陕西普通话成绩查询网(sxpth.cn)" ...

  2. VSCode的LeetCode插件中国区账号密码登录错误

    前提条件与问题 我使用的是version号为19.1.0的node.登陆之前首先点击左上角,切换登录网站为中国区: 然后点击登录,无论是leetcode-cn的账号密码,还是github的帐号密码都提 ...

  3. Github新安全措施:停止Git客户端账号密码登录的解决方案

    太长不看:你以前怎么登录,现在就怎么登录,你以前怎么改密码,现在就怎么改,只不过要把用户名换成oauth2,密码换成你的令牌. 今年 8 月 13 日之后,如果你还用账户密码来操作 Github 上的 ...

  4. java与es8实战之五:SpringBoot应用中操作es8(带安全检查:https、账号密码、API Key)

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本篇是<java与es8实战>系 ...

  5. Github各种账号密码错误的统一解决方案

    使用github,如果有时需要切换不同的账号密码时,容易出现无法push的错误.这时候,最简单的办法,就是重置git config中的账号密码了. 其常见错误为: fatal: unable to a ...

  6. ETEST通行证个人账号密码修改 怎么操作?

    方法/步骤 首先,打开电脑的浏览器,在该浏览器的搜索栏中输入"ETEST通行证",如下图所示. 然后开始搜索,在出现的搜索页面中,找到并点击"ETEST通行证" ...

  7. Elasticsearch、Elasticsearch-head、Kibana 安全设置账号密码验证登陆

    Elasticsearch.Elasticsearch-head.Kibana 安全设置账号密码验证登陆 我的小站.Github.CSDN X-Pack 是 Elastic Stack 的一个扩展,提 ...

  8. 怎么用pycharm更新python_利用PyCharm操作Github(仓库新建、更新,代码回滚)

    Github是目前世界上最流行的代码存储和分享平台,而PyCharm是Python圈中最流行的IDE,它很好地支持了Git操作.本文将会介绍如何利用PyCharm来连接Github,同时演示Githu ...

  9. git保存账号密码_Altium Designer 通过Git实现版本控制

    为了解决每次对PCB工程进行修改时不能回溯的问题,以及为日后团队协作完成某项工程提供方便,所以我研究了一下如何在AD中实现版本控制. 所幸的是,AD本身自带VCS功能(Version Control ...

最新文章

  1. js 文本反向排列显示
  2. Browser Security-超文本标记语言(HTML)
  3. SAP LSMW 物料主数据导入毛重净重放大1000倍问题之对策
  4. CMake命令之execute_process
  5. 怎样使用Secure CRT查看vcenter和esxi主机的日志文件
  6. Selenium+python --获取百度联想词
  7. 2019牛客暑期多校训练营(第四场)
  8. 【计算机类】大学生计算机专业常用工具汇总
  9. leetcode 386. Lexicographical Numbers | 386. 字典序排数(Java)
  10. Swift学习笔记-访问控制(Access Control)
  11. 11.17 dfs poj1979 Red and Black
  12. Xamarin自定义布局系列——PivotPage(多页面切换控件)
  13. GO语言学习之路18
  14. mysql的模拟数据,员工的模拟数据,sql语句的应用,粘贴即用
  15. android lint
  16. React项目的打包与部署到腾讯云
  17. 基于TCP Socket和Websocket实现的相互即时通信系统
  18. FireFox必备插件(二)
  19. 华中科技大学计算机考博真题,2010年华中科技大学计算机考博试题
  20. 研究型论文_CICIDS2017 数据集中基于异常的入侵检测系统的机器学习基准测试(英文论文)

热门文章

  1. 全角字符与半角字符转换
  2. 短息接收--android短彩信的接收流程深入分析(framework)
  3. 锋利的戴德金“刀”并没有耗尽直线上所有的几何点
  4. Linux服务器部署Kibana并通过外网访问
  5. 如何优雅的使用FlaskWeb表单,快速掌握Flask-WTF
  6. [转]循序渐进实现仿QQ界面(一):园角矩形与双缓冲贴图窗口
  7. Java Web开发技术教程入门-初识动态网页
  8. JAVA GC是什么?为什么要有GC?
  9. python爬虫小项目--飞常准航班信息爬取variflight(上)
  10. 电视盒子什么牌子好?测评员分享618热门电视盒子排名