当前位置: 首页 > 后端技术 > Java

使用账号密码操作github?不!

时间:2023-04-01 23:16:26 Java

简介最近在更新github文件的时候,突然说不允许更新,搞得我很迷茫。如果您使用帐户名和密码登录,则必须使用个人访问令牌。今天给大家讲解一下如何缓存这个token。背景介绍出于安全考虑,github将于2020年7月对所有需要认证的git命令切换为基于token的认证。并且从2021年8月13日开始,在GitHub.com上进行Git操作认证时将不再接受账户密码。此更改仅影响使用用户名和密码与github交互的用户。如果您使用的是SSH,或者您之前使用过令牌,或者您使用的是GitHubDesktop,这不会有什么不同。Github做出这个决定主要是出于安全方面的考虑。明文密码容易泄露。如果换成限时令牌,即使泄露,影响也非常有限。并且可以针对同一个github账号根据不同的使用方式生成不同的token,随时掌控token的有效状态和不同token所代表的权限。最大限度地提高您帐户的安全性。生成的token可以随时撤销,token随机性更强,不易被暴力破解。创建令牌token,英文名称为token,personalaccesstoken英文缩写为PAT。它是使用密码对GitHub进行身份验证的替代方法。你可以把token看成密码,但是这个token是有权限和有效时间限制的。同时,出于安全考虑,GitHub将自动删除一年内未使用的个人访问令牌。为确保令牌安全,我们强烈建议为个人访问令牌添加到期时间。要使用令牌,您首先需要创建一个令牌。如何创建令牌?首先登录github.com,在myaccount下,选择settings:然后在左侧边栏,点击DeveloperSettings:然后在左侧选择PersonalAccessToken:点击GenerateToken按钮生成token。在创建过程中,我们需要输入和选择一些数据:比如我们需要给token起一个名字来区分不同的使用场景,还要选择一个过期时间。为了安全起见,过期时间不宜过长。最后就是token对应的权限。如果只对repository进行操作,选择repo即可。创建了这样一个令牌。注意创建的token需要及时保存,因为token的内容后面是无法从网页上看到的。令牌的存储需要与密码的存储一样安全。使用令牌正如我们上面提到的,令牌等同于密码。比如我们复制一个需要密码的仓库,输入你的用户名和token就可以正常操作了。$gitclonehttps://github.com/username/repo.git用户名:your_username密码:your_token但是如果每次都需要输入密码就太麻烦了。让我们解释一下如何在git中缓存令牌。其实token就相当于密码,git中缓存密码的方法同样适用于缓存token。缓存令牌可以通过设置credential.helper的缓存方法缓存密码。一般来说有两种方式,一种是cache,一种是store。缓存是将密码在内存中保存一段时间,密码不会保存在磁盘中,一段时间后会自动从内存中清除。可以使用以下命令启用缓存:gitconfig--globalcredential.helpercache对于存储,它接收用于存储密码文件的文件路径。默认存储路径为~/.git-credentials,可通过指定--file修改:gitconfig--globalcredential.helper'store--file/data/git/.git-credentials'如果使用macsystem,mac提供了一个osxkeychain东西,可以将密码存储到系统用户的钥匙串中。这种方法比较优雅。首先,密码被加密保存。另外,管理非常方便,界面可视化。当然你也可以通过命令行删除github的存储密码:$gitcredential-osxkeychainerasehost=github.comprotocol=https>【回车】如果你是windows机器,可以安装一个工具叫""GitCredentialManagerforWindows”工具,它类似于osxkeychain。上面介绍的使用GCM的存储方式已经过时,现在github推荐使用GitCredentialManagerCore(GCMCore)来管理你的客户端凭证。通过使用GCMCore,根本不需要创建和存储PAT,它全部由GCMCore代表您管理。如何安装GCM?下面是mac上的安装过程:先安装git:brewinstallgit然后安装GCMCore:$brewtapmicrosoft/git$brewinstall--caskgit-credential-manager-core下次clone需要使用经过认证的HTTPSURL,Git会提示你用浏览器窗口登录,通过授权OAuth应用实现GCMCore的凭证管理功能。成功验证后,您的凭据将存储在macOS钥匙串中,每次克隆HTTPSURL时都会使用钥匙串中的凭据。Git不会要求您在命令行中再次键入您的凭据,除非您更改它们。GCMCore也可以在windows和linux环境中使用。总结通过生成一个新的token,替换掉已有的缓存密码,终于可以重新提交我的github了,太棒了!本文已收录于http://www.flydean.com/05-git-personal-access-token/最流行的解读,最深刻的干货,最简洁的教程,很多你不知道的小技巧等你来发现!欢迎关注我的公众号:《程序那些事儿》,懂技术,更懂你!