配置 git 仅询问一次密码并设置超时

配置 git 仅询问一次密码并设置超时

如果我执行git pullgit 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

相关内容