我使用Git已经有一段时间了,但不断的密码请求开始让我感到很烦。
我使用的是Mac OS X和GitHub,我按照GitHub的设置Git页面的指示设置Git和SSH密钥。
我还将github SSH密钥添加到了我的Mac OS X密钥链中,正如github的SSH密钥密码页面中提到的那样。我的公钥已在Git中注册。
然而,每次我尝试Git拉时,我都必须输入用户名和密码。除了SSH密钥之外,我是否需要为此设置其他东西?
我使用Git已经有一段时间了,但不断的密码请求开始让我感到很烦。
我使用的是Mac OS X和GitHub,我按照GitHub的设置Git页面的指示设置Git和SSH密钥。
我还将github SSH密钥添加到了我的Mac OS X密钥链中,正如github的SSH密钥密码页面中提到的那样。我的公钥已在Git中注册。
然而,每次我尝试Git拉时,我都必须输入用户名和密码。除了SSH密钥之外,我是否需要为此设置其他东西?
当前回答
当我升级到macOS v10.12(Sierra)时,我就遇到了这种情况。看起来SSH代理在升级时被清除了。
$ ssh-add -L
The agent has no identities.
只需运行ssh-add即可找到我的现有身份。我输入了密码,很高兴再去一次。
其他回答
我想你解决了你的问题,但我看不到能帮我的解决方案,所以就在这里。
键入终端:
echo "" > ~/.ssh/known_hosts
这将清空known_hosts文件,您必须添加您使用过并连接到的每个主机,但这解决了问题。
orkoden关于在终端中使用带有Git的密钥链的回答不完整,并引发了错误。这是您必须执行的操作,以保存在钥匙链中的终端中输入的用户名和密码:
curl http://github-media-downloads.s3.amazonaws.com/osx/git-credential-osxkeychain -o git-credential-osxkeychain
sudo mv git-credential-osxkeychain /usr/local/bin
sudo chmod u+x /usr/local/bin/git-credential-osxkeychain
然后输入
git config --global credential.helper osxkeychain
如果你已经在curl之前完成了Git配置的部分,那没问题;它会奏效的。
如果你想阻止Git总是要求你提供GitHub存储库的登录凭据,这很容易做到。
使用SSH而不是HTTPS
您可以使用SSH而不是HTTPS更新源远程“
git remote set-url origin git@github.com:username/your-repo.git
配置Git以存储密码和用户名
下面是如何让Git存储用户名和密码:
git config --global credential.helper store
接下来,保存会话的用户名和密码:
git config --global credential.helper cache
如果您使用https协议,Git将提示您输入密码。如果您使用ssh,它将使用您的私钥进行身份验证,而不是询问密码。
以下是解决此问题的方法:
git远程-v
这将显示来源的url。您将注意到此url中的https。(此处示例)
现在,您必须先删除这个,然后使用ssh添加url
git remote remove origin
git remote add origin git@github.com:PrestaShop/PrestaShop.git
步骤1:检查当前配置
cat .git/config
您将获得:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = https://github.com/path_to_your_git.git
fetch = +refs/heads/*:refs/remotes/origin/*
[user]
name = your_username
email = your_email
[branch "master-staging"]
remote = origin
merge = refs/heads/master-staging
步骤2:删除远程源
git remote rm origin
步骤3:使用用户名和密码添加远程源
git remote add origin https://your_git_username:your_git_password@github.com/path_to_your_git.git