最近在更新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/
最通俗的解读 最深刻的干货 最简洁的教程 众多你不知道的小技巧等你来发现
欢迎关注我的公众号:「程序那些事」,懂技术 更懂你
现如今企业信息化明显提速,拥有自己的服务器已不是什么大不了的事情,即使没有...
前言 Hey,大家好,我是码农,星期八,这次咱们来学一下Go语言的一个类型转换工...
本文要介绍的是一个发生在我们线上环境的真实案例,问题发生在某次大促期间,对...
「最近将会更新 Go 语言入门的系列文章 非常基...
.site域名 注册一年多少钱?. site域名 实际注册价格,可能会发现在不同时间注册...
7 月 31 日 由阿里云主办的 Serverless Developer Meetup 在杭州举办。本次沙龙...
本文转载自微信公众号「萝卜大杂烩」,作者萝卜大杂烩。转载本文请联系萝卜大杂...
RVB2601 板子整体干净利落 不过有些地方还可以做的更好 纯属个人观点。 板子丝印...
在分析平台所生成的报告中看到模糊的数字是一回事。查看详细而丰富多彩的图形则...
高燃比赛,等你pick 想了解更多信息 请点击下方预约宣讲会直播...