在GitHub中生成个人访问令牌后,是否有必要将其存储在机器本地的某个地方?
如果是,是否有首选的存储方式?
在GitHub中生成个人访问令牌后,是否有必要将其存储在机器本地的某个地方?
如果是,是否有首选的存储方式?
当前回答
安装Git凭证管理器!https://github.com/GitCredentialManager/git-credential-manager。GCM支持缓存以及在会话之间持久存在的各种特定于平台的凭据存储。
更棒的是:GCM支持用户友好的安全认证GitHub和GitLab通过web浏览器与OAuth。这意味着您甚至不再需要创建个人访问令牌。当你推送git时,只需按照链接到GitHub并授权应用程序。后续的身份验证不需要交互。
OAuth比个人访问令牌更安全,因为令牌的有效期很短,在需要时使用更长的刷新令牌进行刷新。
其他回答
安装Git凭证管理器!https://github.com/GitCredentialManager/git-credential-manager。GCM支持缓存以及在会话之间持久存在的各种特定于平台的凭据存储。
更棒的是:GCM支持用户友好的安全认证GitHub和GitLab通过web浏览器与OAuth。这意味着您甚至不再需要创建个人访问令牌。当你推送git时,只需按照链接到GitHub并授权应用程序。后续的身份验证不需要交互。
OAuth比个人访问令牌更安全,因为令牌的有效期很短,在需要时使用更长的刷新令牌进行刷新。
基本上我是在我的机器上做的:
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
我喜欢在存储库中对它们进行加密,并使用.envrc (https://direnv.net/)加载它们。
为了做到这一点,我使用ssh-vault来加密数据,使用我的ssh密钥,GitHub已经公开,例如:
echo MY_TOKEN="secret" | ssh-vault -u <github-user> create > my-encypted-vars.ssh
然后.envrc的内容看起来像这样:
echo "Enter ssh key password"
context=$(ssh-vault view $HOME/projects/my-encrypted.ssh | tail -n +2)
export ${context}
这将解密my-encrypted-vars中的数据。ssh文件,并设置MY_TOKEN到我的环境变量,每次我cd到项目目录。
通过这样做,令牌/变量被“安全地”存储,并且随时可以作为环境变量使用
尝试启用此功能以帮助跨推/拉持久化
git config credential.helper store
对于正在克隆的repo / macOS用户/安装iTerm2 https://iterm2.com/
使直到
只要在需要时单击该片段即可。 另外,你在用哦,我的zsh,对吧? https://github.com/ohmyzsh/ohmyzsh
您可以缓存您的凭证为一个定义的时间使用:
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。