![配置 git 仅询问一次密码并设置超时](https://linux22.com/image/1615062/%E9%85%8D%E7%BD%AE%20git%20%E4%BB%85%E8%AF%A2%E9%97%AE%E4%B8%80%E6%AC%A1%E5%AF%86%E7%A0%81%E5%B9%B6%E8%AE%BE%E7%BD%AE%E8%B6%85%E6%97%B6.png)
如果我执行git pull
或git push
,那么总是会被要求输入密码。
我在 rackspeed 上生成了一对公钥/私钥。
我在 Bitbucket 中打开了我的项目:设置 -> 通用 -> 访问键 并添加了我的公钥。
然后我配置了 git看到这里,以便它记住密码600秒。
git config --global credential.helper 'cache --timeout=600'
我确保我的 git url 不是 https:
origin [email protected]:company/example.git (fetch)
origin [email protected]:company/example.git (push)
然后我执行了git pull
。它第一次要求输入密码。然后我git pull
再次执行,但它仍然要求输入密码。
答案1
由于您使用的是 SSH 远程,因此 OpenSSH 会提示您输入密码,而不是 Git。Git 不会处理 OpenSSH 的密码(因为这不是一件容易的事),因此配置 Git 的凭证助手不会产生任何效果。
如果您想使用 Git 的凭证助手,那么您需要使用 HTTPS 远程。
或者,您可以使用该ssh-agent
程序来保存密码。您可以eval $(ssh-agent -s)
在 shell 中运行,然后运行ssh-add
以添加密钥。系统会提示您输入一次密码,但不会在该终端中再次提示。
您的环境可能已经为您设置了 SSH 代理。您可以运行env | grep SSH_AUTH_SOCK
,如果它输出任何内容,则只需运行即可ssh-add
,而无需运行第一个命令。
答案2
让 Git 存储用户名和密码,并且它永远不会询问它们。
git config --global credential.helper store
保存会话的用户名和密码(缓存):
git config --global credential.helper cache
您还可以为上述设置设置超时:
git config --global credential.helper 'cache --timeout=600'
答案3
尝试在终端上使用这个来保存您的凭证:
$ git config credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>
Git 不会在git push
或上再次询问密码git pull
。
另请阅读:git help credentials