在GitHub中生成个人访问令牌后,是否有必要将其存储在机器本地的某个地方?
如果是,是否有首选的存储方式?
在GitHub中生成个人访问令牌后,是否有必要将其存储在机器本地的某个地方?
如果是,是否有首选的存储方式?
当前回答
您可以缓存您的凭证为一个定义的时间使用:
git config --global credential.helper cache
默认的缓存时间是900秒(15分钟),但可以通过以下方式更改:
git config --global credential.helper 'cache --timeout=3600'
参见以下Github页面:
https://docs.github.com/en/github/using-git/caching-your-github-credentials-in-git
这不是一个永久存储,并且与其他注释一样,凭证不应该以纯文本形式存储,这是一个安全风险。我使用密码管理器(https://bitwarden.com/)存储PAT(个人访问令牌),然后将其复制到第一次使用时,然后将其缓存到其中。如果您在Github帐户上启用2FA,则需要PAT。
其他回答
尝试启用此功能以帮助跨推/拉持久化
git config credential.helper store
对于正在克隆的repo / macOS用户/安装iTerm2 https://iterm2.com/
使直到
只要在需要时单击该片段即可。 另外,你在用哦,我的zsh,对吧? https://github.com/ohmyzsh/ohmyzsh
基本上我是在我的机器上做的:
https://gist.github.com/bsara/5c4d90db3016814a3d2fe38d314f9c23
我的配置文件脚本与描述略有不同:
env=~/.ssh/agent.env
agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }
agent_start () {
(umask 077; ssh-agent >| "$env")
. "$env" >| /dev/null ;
}
agent_load_env
# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)
if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
agent_start
ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
ssh-add
fi
unset env
为了在缓存中存储您的凭据并避免每次执行git操作时都登录,请遵循以下步骤:
导航到本地存储库文件夹。 在当前文件夹的终端:git config——global——replace-all credential。辅助缓存 执行git push或git pull。 使用用户名和访问令牌登录(访问令牌是您的密码)。令牌可以在GitHub中设置,并可以访问repo,工作流,write:packages和delete:packages。 重复git push或任何git操作,你会发现从现在开始它不再要求登录凭据。
你可以使用pass存储github https令牌。
将git主机映射到pass条目的两个备选方案:
Bash脚本映射到右传递项:
#!/usr/bin/env bash
# assuming "get" action from git and a config like this
# git config --global credential.helper $XDG_BIN_HOME'/git_credentials_from_pass $@'
while IFS= read -r line
do
echo "$line"
if [[ "$line" =~ host=.*github.com.* ]]; then
echo "username=your_user_name"
echo "password=$(pass show token_github.com/your_username)"
#else ...
fi
done
改变your_username和token_github.com的方式,你设置它通过pass插入。
这将添加令牌传递,无需输入或粘贴两次:
echo your_github_token | sed p | pass add token_github.com/your_username
安装pass-git-helper:
git config --global credential.helper '!pass-git-helper $@'
pass-git-helper需要一个ini文件来映射git请求和pass条目。 $ {XDG_CONFIG_HOME} / pass-git-helper git-pass-mapping.ini例子:
[DEFAULT]
username_extractor=entry_name
[github.com*]
target=token_${host}/your_github_username
使用git代替。基本上,将每个https://github调用替换为访问令牌+ https://
git config——global url."https://<username>:<github-token>@github.com/". insteadof "https://github.com/
现在每次调用github都会自动添加您的凭据。
我在这里找到了很好的答案。 更多关于git insteadOf的信息。