Github的PAT口令的密码记录和保存方案

本文最后更新于:2022年3月15日 晚上

参考链接

简单方案

最简单的方案是讲自己的配置文件用明文保存,在文档中查询可知道指令如下

1
git config --global credential.helper store

在设置credential.helper为全局store之后,下一次的验证会出现提示并保存,之后则会使用存在~/.git-credentials的明文帐号密码进行登入

加密方案

为了更好的管理Github的Token,需要一个Git凭证助手来帮我们记忆用户名和对应的PAT,以下为Git-Credential-Manager-Core引导

安装

安装Lateset Release的GCM,并初始化设置

1
2
sudo dpkg -i <path-to-package>
git-credential-manager-core configure

配置

在Linux上使用GCM需要额外设置credential.credentialStore,其中包含的设置方法如下:

通过Secret Service API来存储

该方法需要系统有GUI显示功能

1
2
3
export GCM_CREDENTIAL_STORE=secretservice
# or
git config --global credential.credentialStore secretservice

这个办法通过libsecret库来和Secret Service进行交互,所有的凭证都存储在“collections”当中。如果要查看的话,可以通过secret-toolseahorse来进行查看。注:在请求用户帐号信息的时候会通过GUI来进行交互。

通过Git自带的凭证缓存机制来存储

1
2
3
export GCM_CREDENTIAL_STORE=cache
# or
git config --global credential.credentialStore cache

这种方法保存的密码不会以可长期读取的文件形式存在硬盘上,如果是需要链接一些临时性的服务可以用这个方法。默认来说git credential-cache会储凭证900s,可以通过如下指令修改:

1
2
3
export GCM_CREDENTIAL_CACHE_OPTIONS="--timeout 300"
# or
git config --global credential.cacheOptions "--timeout 300"

通过纯文本的形式进行保存

这办法不安全

1
2
3
export GCM_CREDENTIAL_STORE=plaintext
# or
git config --global credential.credentialStore plaintext

这种办法保存的密码默认会存在~/.gcm/store目录下,目录可通过GCM_PLAINTEXT_STORE_PATH环境变量来进行修改,如果文件不存在则会被创建新创建的文件权限为700.

通过GPG/pass进行存储

这种方法需要有一对GPG密钥

1
2
3
export GCM_CREDENTIAL_STORE=gpg
# or
git config --global credential.credentialStore gpg

这种办法主要使用了pass工具,默认情况下文件会保存在~/.password-store文件下,该目录可以通PASSWORD_STORE_DIR来进行修改。在使用这种办法进行凭证管理之前,首先需要通过一对GPG密钥对pass进行初始化操作。

1
pass init <gpg-id>

这里的<gpg-id>指的是当前使用gpg密钥对的用户的系统id。通过以下指令可以创建一个自己的gpg密钥对:

1
2
gpg --gen-key
# and follow prompts

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!