使用账号密码来操作 github? NO!
简介
最近在更新 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 中缓存令牌。事实上令牌跟密码是等价的,在 git 中缓存密码的方式同样适用于缓存令牌。
缓存令牌
通过设置 credential.helper 的缓存方式,可以对密码进行缓存。
通常来说有两种方式,一种是 cache,一种是 store。
cache 是将密码放在内存中一段时间,密码不会存放在磁盘中,过一段时间会自动从内存中清除。
通过使用下面的命令,可以开启 cache:
对于 store 来说,它接收一个文件的路径,用来存储密码文件。默认存放的路径是~/.git-credentials,可以通过指定–file 来修改:
如果你使用的 mac 系统,mac 提供了一个 osxkeychain 的东西,可以将密码存储到你的系统用户的钥匙串中。这种方式更加优雅,首先密码是加密保存的,另外其管理起来也非常方便,还有可视化的界面。
当然你也可以从命令行将 github 的存储密码进行删除:
如果你在 windows 机子上,那么可以安装一个叫做““Git Credential Manager for Windows”的工具,它是一个和 osxkeychain 类似的东西。
使用 GCM
上面介绍的存储方法都已经过时了,现在 github 推荐使用 Git Credential Manager Core (GCM Core) 来对你的客户端凭证进行管理。
通过使用 GCM Core,根本不需要创建和储存 PAT,全部都有 GCM Core 来代表你进行管理。
怎么安装 GCM 呢?下面是在 mac 上安装的过程:
首先安装 git:
然后安装 GCM 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/
最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!
欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!
版权声明: 本文为 InfoQ 作者【程序那些事】的原创文章。
原文链接:【http://xie.infoq.cn/article/296cd11cab85ecbf440599907】。文章转载请联系作者。
评论