GitHub一直在询问用户名/密码; BitBucket没有

时间:2014-02-17 17:34:53

标签: git github ssh

有一段时间我一直在Git bash(Mysysgit for Windows)中使用BitBucket。最近我添加了GitHub,但是当git存储我的BitBucket凭据时,它不适用于GitHub。

我尝试过各种各样的事情和方法(在this tutorial和各种SO问题中)。

以下是我详细介绍的内容:

1)为GitHub创建密钥对。

2)将公钥上传到GitHub帐户设置中的SSH keys

3)测试了两个密钥对:

$ ssh -T git@github.com
Enter passphrase for key '/c/Users/***/.ssh/id_rsa_github':
Hi ***! You've successfully authenticated, but GitHub does not provide shell access.

$ ssh -T git@bitbucket.org
logged in as ***.
You can use git or hg to connect to Bitbucket. Shell access is disabled.

4)使用以下内容更新了我的配置文件:

Host bitbucket.*
 User ***
 IdentityFile ~/.ssh/id_rsa

Host github.*
 HostName github.com
 User ***
 ForwardAgent yes
 IdentityFile ~/.ssh/id_rsa_github

5)添加了私钥和密码:

$ eval `ssh-agent`
$ ssh-add ~/.ssh/id_rsa_github
Enter passphrase for /c/Users/***/.ssh/id_rsa_github:
Identity added: /c/Users/***/.ssh/id_rsa_github (/c/Users/***/.ssh/id_rsa_github)
$ ssh-add -L
ssh-rsa **key here*** /c/Users/***/.ssh/id_rsa_github

6)添加了.bashrc文件以自动启动ssh-agent:

eval `ssh-agent`

仍然:

$ git push origin master
Username for 'https://github.com':

我哪里错了?


编辑:按照建议切换到SSH后,git每次都不会询问我的密码/用户名。但是,现在它每次都要求我的密码短语。从一个git会话:

$ git push origin master
Enter passphrase for key '/c/Users/***/.ssh/id_rsa_github':
Counting objects: 5, done.
***

$ git commit -am "Minor edit"
 1 file changed, 1 insertion(+), 1 deletion(-)

$ git push origin master
Enter passphrase for key '/c/Users/***/.ssh/id_rsa_github':

我已将我的.bashrc文件更新为Github suggests it,但据我了解,它只应该询问一次我的密码。即使我使用管理员权限运行mysysgit,也不会保存密码。

2 个答案:

答案 0 :(得分:3)

GitHub提供了多种访问存储库的方法。当前默认值是通过https URL,不使用您的SSH信息。网址如下所示:

https://github.com/<owner>/<project>.git
git@github.com:<owner>/<project>.git

只需切换到第二种,即SSH地址,Git将使用您的SSH信息。

答案 1 :(得分:0)

我通过执行以下操作解决了问题:

1)使用GitHub对.bashrc找到here的建议(感谢@poke);

2)更改了.bashrc代码以将位置添加到我的密钥:

...
if ! agent_is_running; then
    agent_start
    ssh-add ~/.ssh/id_rsa
    ssh-add ~/.ssh/id_rsa_github
elif ! agent_has_keys; then
    ssh-add ~/.ssh/id_rsa
    ssh-add ~/.ssh/id_rsa_github
fi
...

3)根据BitBucket的文档here将我的config文件更新为:

# Bitbucket account
Host bitbucket.org
 HostName bitbucket.org
 PreferredAuthentications publickey
 IdentityFile ~/.ssh/id_rsa

# GitHub account
Host github.com
 HostName github.com
 PreferredAuthentications publickey
 IdentityFile ~/.ssh/id_rsa_github

4)并且,此步骤在我之前的尝试中缺失,使用bash命令ps列出所有进程,然后kill 任何 {{1}实例(所以没有ssh-agent再次运行)。

5)然后我重新启动了git bash,并在启动时立即提示输入Github密码。然而,这一次,它被ssh-agent记住了。

之前我还验证过没有ssh-agent的多个实例,但我没有杀死ssh-agent的每个实例,因为那是违反直觉的。但是,为了使ssh-agent文件正常工作,显然需要这样做。

希望这些步骤对于遇到类似问题的其他人也有帮助。