简介

最近在更新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. 【原】mac电脑保存服务器账号/密码登录操作

    一.说明 mac电脑自带终端神奇iterm2,日常登录服务器操作一般场景为ssh user@ip,确认后再输入密码操作. 该操作较为麻烦且需通过hostname判断所在主机. 通过ssh生成秘钥方式较 ...

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

    今年 8 月 13 日之后,如果你还用账户密码来操作 Github 上的仓库,就会收到如下警告: remote: Support for password authentication was rem ...

  3. git永久保存账号密码,免去git重复输入账号密码操作

    这是我刚刚遇到的问题,每次操git操作都要输入用户名和密码,网上百度了下搜到了方法解决了 方法一:(快捷简单) 直接在git bash 中执行命令:git config --global creden ...

  4. python实战===实现读取txt每一行的操作,账号密码

    最近搞到了一批163邮箱的账号和密码,但是里面有部分账号不能用,密码是错的. 以此为背景 人工手动挨个登录检查效率太低! 于是写了下面这个脚本: import linecache import smt ...

  5. Linux让git记住账号密码

    Linux让git记住账号密码 ——IT唐伯虎 摘要: Linux让git记住账号密码. 1.进入根目录,指令:cd / 2.创建记录账号密码的文件,指令:touch .git-credentials ...

  6. 账号密码管理系统Access版本

    哈哈,花了我整整五天时间,账号密码管理系统软件终于成功编写完成了.由于我的各大论坛的账号密码特别多,记性又不好.所以一直以来都想要这么一个软件的,但是以前学习的都是面向过程的编程语言,一直无法实现这个 ...

  7. APP账号密码传输安全分析

            最近在搞公司的安卓APP测试(ThinkDrive 企邮云网盘)测试,安卓app测试时使用代理抓包,发现所此app使用HTTP传输账号密码,且密码只是普通MD5加密,存在安全隐患,无法 ...

  8. Android数据存储-通过SharedPreferences实现记住密码的操作

    在Android中登陆中,为了实现用户的方便,往往需要根据用户的需要进行记住密码的操作,所以,在Android数据存储中SharedPreferences恰恰可以实现这一点 下面,小编将带领大家通过S ...

  9. Requests库的几种请求 - 通过API操作Github

    本文内容来源:https://www.dataquest.io/mission/117/working-with-apis 本文的数据来源:https://en.wikipedia.org/wiki/ ...

随机推荐

  1. MySQL 插入中文后,显示为空白

    https://blog.csdn.net/sun_hj_95/article/details/79488583 在MySQL中插入中文后,显示如下: 解决方案: 在my.ini (在MySQL的安装 ...

  2. GKCTF X DASCTF 2021_babycat复现学习

    17解的一道题,涉及到了java反序列化的知识,学习了. 看了下积分榜,如果做出来可能能进前20了哈哈哈,加油吧,这次就搞了两个misc签到,菜的扣脚. 打开后是个登录框,sign up提示不让注册, ...

  3. java基础---设计模式(2)

    结构型模式 出处:https://blog.csdn.net/zhangerqing/article/details/8239539 一.适配器模式 适配器模式将某个类的接口转换成客户端期望的另一个接 ...

  4. 用EXCEL打开CSV文件

    1.打开EXCEL 2.数据--自文本--选择对应的CSV文件 3.设置表头所在的行(例如17行为表头)则输入17 4.确定分隔符 5.单击"确定"即可

  5. c++中的对象模型

    1 对象模型的前世 类在c++编译器内部可以理解成结构体,所以在对象模型分析时,我们可以把 class  当作一种特殊的 struct: 1)在内存中 class 可以看作是普通成员变量的集合: 2) ...

  6. Java程序设计当堂测试感受

    开学第一周的周四,按照王主任的安排,进行了Java当堂测试,来检测暑假八周的学习成果.这一堂课真是让我哭笑不得,这一节课三个小时都在写代码,感觉暑假学的一点点代码什么都不是,写一个系统都完不成,感觉自 ...

  7. IO编程之File类

    File类是java.io包下代表与平台无关的文件及目录,程序操作文件和目录都可以通过File类来完成.值得指出的是,不管是文件还是目录都可以通过File类来操作.File能新建.删除.重命名文件和目 ...

  8. Docker编排利器DockerCompose

    Docker 编排利器 DockerCompose,编排之后可以一次性通过一条命令启动一组服务 例如一条命令启动 SpringBoot 项目,同时启动 SpringBoot 项目依赖的其他中间件(My ...

  9. java 8新特性 并行流

    使用并行流,提高cpu利用率,提高运算速度 /** * java 8并行流 * 底层运用fork join框架 */ @Test public void test(){ Instant start = ...

  10. 开发工具IDE从入门到爱不释手(六)常用插件Git

    Git 环境准备 本地基本操作 本地文件关联git管理 文件提交git Ctrl+K:提交 关联远程仓库 先注册github账号 连接本地 git菜单 撤销提交 追加提交 Code Review