我使用Git已经有一段时间了,但不断的密码请求开始让我感到很烦。

我使用的是Mac OS X和GitHub,我按照GitHub的设置Git页面的指示设置Git和SSH密钥。

我还将github SSH密钥添加到了我的Mac OS X密钥链中,正如github的SSH密钥密码页面中提到的那样。我的公钥已在Git中注册。

然而,每次我尝试Git拉时,我都必须输入用户名和密码。除了SSH密钥之外,我是否需要为此设置其他东西?


当前回答

使用此命令:用适当的主机名替换github.com

git remote set-url origin git@github.com:user/repo.git

其他回答

我觉得static_rtti提供的答案在某种意义上很粗糙。我不知道这是否在早期可用,但Git工具现在提供了凭据存储。

缓存模式

$ git config --global credential.helper cache

使用“缓存”模式将凭据保存在内存中一段时间。没有一个密码存储在磁盘上,15分钟后将从缓存中清除。

存储模式

$ git config --global credential.helper 'store --file ~/.my-credentials'

使用“存储”模式将凭据保存到磁盘上的纯文本文件中,它们永远不会过期。

我个人使用的是商店模式。我删除了存储库,克隆了它,然后必须输入一次凭据。

参考:7.14 Git工具-凭证存储

在GitHub中使用密钥之前,请按照教程中的步骤测试SSH连接:

$ ssh -T git@github.com
# Attempts to ssh to GitHub

正如其他人所说,您可以安装密码缓存助手。我主要只是想发布其他平台的链接,而不仅仅是Mac。我正在运行Linux服务器,这很有用:在Git中缓存GitHub密码

对于Mac:

git credential-osxkeychain

窗户:

git config --global credential.helper wincred

Linux:

git config --global credential.helper cache
git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)

当我升级到macOS v10.12(Sierra)时,我就遇到了这种情况。看起来SSH代理在升级时被清除了。

$ ssh-add -L
The agent has no identities.

只需运行ssh-add即可找到我的现有身份。我输入了密码,很高兴再去一次。

使用以下命令增加超时时间,以便您可以暂时重新键入密码

git config --global credential.helper 'cache --timeout 3600'

我在Bitbucket和GitHub上使用了它,这两个都适用。你唯一需要做的就是3600秒。增加到你想要的程度。我把它改成了259200,大约30天。这样,我每隔30天左右重新输入一次密码。