您现在的位置是:休闲 >>正文

git 添加凭证

休闲6人已围观

简介昨天在终端里敲了第无数次 git push,又弹出那个熟悉的提示:fatal: Authentication failed for 'https://github.com/...'。我盯着屏幕愣了两秒 ...

昨天在终端里敲了第无数次 git push,加凭又弹出那个熟悉的加凭提示:fatal: Authentication failed for 'https://github.com/...'。我盯着屏幕愣了两秒,加凭才想起来上个月刚把 GitHub 的加凭密码改成了 token,本地缓存的加凭凭证过期了。

这事其实挺烦的加凭。Git 不像 SSH 那样配好密钥就一劳永逸,加凭走 HTTPS 协议的加凭时候,每次跟远程仓库打交道都得证明“你是加凭你”。以前用账号密码还能凑合,加凭现在 GitHub、加凭GitLab 这些平台全推 token 或者 OAuth,加凭密码认证基本被扫进历史垃圾堆了。加凭你要是加凭没把凭证存好,一天 push 十次就得输十次 token,加凭那串字符又长又乱,复制粘贴都嫌累。

最省事的办法是让 Git 自己记住。全局配置里有个 credential.helper,把它设成 store,凭证就会以明文形式写进用户目录下的 .git-credentials 文件。操作就一行命令:

git config --global credential.helper store

之后第一次 push 输入一次 token,Git 就把它存下来了,下次直接放行。方便是真方便,但明文存储这事得心里有数——那文件里 token 躺得整整齐齐,谁拿到你电脑谁就能用。个人开发机无所谓,公司公用机器或者多人共用的服务器上,这么干等于把钥匙插在门上。

稍微讲究一点的做法是用 cache 模式:

git config --global credential.helper cache

它把凭证放在内存里,默认 15 分钟过期。时间可以自己调,比如 git config --global credential.helper 'cache --timeout=3600',一小时之内不用重复输入。这个方案折中,既不用反复敲 token,也不至于把凭证永久留在磁盘上。缺点是重启终端或者超时之后,还得再来一遍。

Mac 用户其实有更顺手的选项。系统自带的钥匙串访问可以直接接管凭证管理:

git config --global credential.helper osxkeychain

Windows 上对应的则是 manager 或者 manager-core,Git for Windows 安装时默认就勾选了。这两个方案把凭证交给操作系统的安全存储,加密、权限控制都交给系统管,比手动折腾文件靠谱得多。

我自己的习惯是分场景。公司笔记本用 osxkeychain,家里那台常年不关机的 Linux 小主机用 cache 加长超时,因为那机器就我一个人用,物理安全有保障。之前有次图省事在测试服务器上开了 store,结果同事排查问题时顺手 cat 了那个凭证文件,场面一度非常尴尬。

还有个细节容易踩坑:如果你之前配过 store,后来又改成 cache,旧的 .git-credentials 文件不会自动消失。里面存的 token 该删还得手动删,不然等于换了个锁但旧钥匙还挂在门框上。

另外,现在很多平台推荐用 SSH 而不是 HTTPS,配好密钥之后确实没这些破事。但有些网络环境封 SSH 端口,或者公司代理只放行 HTTPS,那就只能老老实实跟 credential helper 打交道。工具没有绝对好坏,看场景选合适的就行。

最后提一嘴,如果你用的是 GitHub,token 别选那种永不过期的 classic token,尽量用 fine-grained token 并设个合理的过期时间。凭证管理这事,方便和安全永远在打架,找到自己舒服的平衡点就够了。

Tags:

相关文章

  • 原创漏洞查询

    休闲

    原创漏洞查询 凌晨两点,我盯着屏幕上的十六进制转储,手边咖啡已经凉透。这是本周第三个疑似漏洞,前两个都确认是误报——但这次不一样,那段异常的内存访问模式像一根刺,扎在代码最不起眼的角落里。我拨通同事 ...

    【休闲】

    阅读更多
  • 电脑代码装逼

    休闲

    深夜两点,我盯着屏幕上那段报错的Ruby代码,咖啡杯沿积了厚厚一圈褐渍。同事老张发来消息:“这个功能明天要上线,你看着办。”我删掉第14行那个多余的括号,程序跑通了。他回了个抱拳表情。我关掉IDE,没 ...

    【休闲】

    阅读更多
  • termux是什么

    休闲

    Termux 是一个运行在 Android 手机上的 Linux 终端模拟器。它不模拟老旧的计算器界面,也不搞什么花哨的图形按钮——装好后打开,你看到的就是一个黑底白字的命令行,跟几十年前的 UNIX ...

    【休闲】

    阅读更多


友情链接