Git不断提示我输入密码
我已经使用Git了一段时间了,但是不断要求输入密码正开始让我走上困境。
我使用OSX和Github,并按照GitHub的Set Up Git页面的指示设置了Git和SSH密钥。 我还将github SSH密钥添加到我的Mac OSX钥匙串中,如GitHub的SSH密钥密码页面中所述。 我的公钥已在Git中注册。
尽管如此,每次我尝试拉扯时,都必须输入我的用户名和密码。 除了需要为此设置的SSH密钥外,还有其他什么吗?
我想你可能有错误的git repo url。
打开.git/config
并找到[remote“origin”]部分。 确保你使用的是SSH
:
ssh://git@github.com/username/repo.git
而不是https
或git
:
https://github.com/username/repo.git
git://github.com/username/repo.git
现在您可以使用SSH Key
而不是username
和password
。
[编辑:]如果Git抱怨'origin' has already been added
了'origin' has already been added
,打开.config
文件并在[remote origin]
之后编辑url = "..."
部分为url = ssh://github/username/repo.git
配置credential.helper
在OS X上(现在是macOS)在终端中运行它
git config --global credential.helper osxkeychain
它使git可以使用Keychain.app来存储用户名和密码,并从密钥链中将密码从密钥中检索到私钥ssh密钥。
对于Windows使用:
git config --global credential.helper wincred
故障排除
如果git凭证助手配置正确,macOS会将密钥保存在keychain中。 有时,ssh和存储在密钥链中的密码短语之间的连接可能会中断。 运行ssh-add -K
或ssh-add ~/.ssh/id_rsa
再次将密钥添加到钥匙串中。
macOS 10.12 Sierra更改为ssh
对于macOS 10.12 Sierra ssh-add -K
需要在每次重新启动后运行。 为了避免这种情况,用这个内容创建~/.ssh/config
。
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
从10.12.2的ssh_config
man
页:
UseKeychain
在macOS上,指定系统在尝试使用特定密钥时是否应在用户的钥匙串中搜索密码短语。 当用户提供密码短语时,该选项还指定密码短语是否应该存储到密钥链中,一旦它被验证为正确。 争论必须是'是'或'否'。 默认值是'否'。
苹果已经添加了解释发生了什么的Technote 2449。
在macOS Sierra之前,ssh会提供一个对话框询问您的密码,并提供选项将其存储到钥匙串中。 此用户界面在不久前已被弃用,并已被删除。
当我升级到macOS Sierra时,这发生在我身上。 看起来ssh代理在升级后被清除。
$ ssh-add -L
The agent has no identities.
简单地运行ssh-add
找到我现有的身份,输入密码并重新输入。