Git on Bitbucket:即使在上传我的公共SSH密钥之后,也总是要求输入密码

Git on Bitbucket: Always asked for password, even after uploading my public SSH key

我上传了我的~/.ssh/id_rsa.pub到bitback的ssh密钥,正如解释的那样,但是git在每次操作(如git pull时仍然要求我输入密码。我错过什么了吗?

它是一个私有存储库(另一个人的私有存储库的分支),我这样克隆了它:

1
git clone [email protected]:Nicolas_Raoul/therepo.git

这是我当地的.git/config

1
2
3
4
5
6
7
8
9
10
11
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote"origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = https://[email protected]/Nicolas_Raoul/therepo.git
[branch"master"]
        remote = origin
        merge = refs/heads/master

在具有相同公钥的相同环境中,GitHub上的Git工作正常。.sshrwx------.ssh/id_rsa-rw-------.ssh/id_rsa.pub-rw-r--r--


您确定使用ssh URL克隆了它吗?

origin的url表示url = https://[email protected]/Nicolas_Raoul/therepo.git,所以如果它使用的是https,那么不管您的ssh密钥是什么,它都会请求密码。


如本文所述,如果您使用ssh URL进行克隆,则不需要每次推/拉时输入用户名/密码。通过@manojlds检查上述答案

但是,如果您希望使用https进行克隆,并且希望避免每次输入用户名/密码,则可以使用以下命令将凭据存储到缓存中:

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

如果3600(秒)表示1小时,您可以根据需要进行更改。


上面已经回答了。我将总结上述检查步骤。

在项目目录中运行git remote -v。如果输出显示以https://abc开头的远程URL,那么每次都可能需要用户名密码。

因此,要更改远程URL,请运行git remote set-url origin {ssh remote url address starts with mostly [email protected]:}

现在运行git remote -v来验证更改后的远程URL。

请参阅:https://help.github.com/articles/changing-a-remote-s-url/


在HTTP请求情况下,也可以将凭据(带密码)直接粘贴到URL中:

1
http://username:[email protected]/...

这样可以省去每次都给你证书的痛苦。简单地修改.git/config(URL)。


你好,未来的谷歌人。

在macos>=high sierra上,由于某些原因,ssh密钥不再保存到密钥链中。

使用ssh-add -K也不再能够在重启后存活下来。

以下是3种可能的解决方案。

我成功地使用了第一种方法。我在~/.ssh中创建了一个名为config的文件:

1
2
3
4
Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa

这些答案都没有帮助我,结果我的问题略有不同。每次发送密钥之前,ssh都在请求我的密码。所以我要做的就是把我的密码和这个命令链接起来:

1
ssh-add -K ~/.ssh/id_rsa

然后它会提示您输入密码并存储它。如果每次提示输入密码时都显示

Enter passphrase for key '/Users//.ssh/id_rsa':

更多信息在这里

注意:我在我的Mac机器上成功地使用了它,但是正如@rob kwasowski在下面指出的,大写的K选项是Mac独有的。如果不在Mac上,您将需要使用小写的K(这可能也适用于Mac,但我没有测试)。


下面假设通过iterm/终端访问bitback的命令行。

对于MacOS Sierra 10.12.5,我的系统出现了一个等效的问题——在到BitBucket的每个连接上请求我的ssh密码。

该问题与MacOS 10.12.2中的OpenSSH更新有关,在技术说明TN2449中对此进行了描述。

您很可能希望定制您的解决方案,但将以下内容添加到~/.ssh/config文件时可以使用:

1
2
Host *
    UseKeychain yes

有关ssh配置的更多信息,请查看ssh_config的手册页:

1
% man ssh_config

另一件事是:这里有一篇关于超级用户的好文章,根据您的需要和设置讨论这个问题和各种解决方案。


  • 步骤1:安装Git凭据winstore
    https://confluence.atlassian.com/bitbacketserver/permanently-authenticating-with-git-repositories-776639846.html

  • 步骤2:git config--global credential.helper'cache--timeout 3600'
    这将存储您的密码1小时

  • 步骤3:运行git命令这将提示您输入密码,凭证将提示您并存储您的密码


您可能需要重新检查您的ssh标识文件。您可能正在引导BitBucket查看另一个/不正确的私钥,该私钥与您保存在BitBucket上的等效公钥相同。

tail ~/.ssh/config检查一下,你会看到类似的情况:

1
2
3
Host bitbucket.org
 HostName bitbucket.org
 IdentityFile ~/.ssh/personal-bitbucket-ssh-key

记住,可以使用ssh-add命令添加其他标识(如工作和家庭),例如:

1
2
ssh-keygen -t rsa -C"companyName" -f"companyName"
ssh-add ~/.ssh/companyName

一旦您确认在本地查看哪个私钥,您就可以使用您的公共对等密钥,在这种情况下:

1
cat ~/.ssh/personal-bitbucket-ssh-key.pub | pbcopy

把密码贴到比特桶上。现在,您的Git推送(前提是您使用的是前面提到的ssh克隆)将不带密码,因为您的设备是公认的友好设备。

希望这有助于为某人清理。


我在登录的时候还有些奇怪。我遇到了一些看起来很蠢但在我的案例中起作用的事情。只需进入MacOS的钥匙链。在侧边栏中找到登录锁定图标。单击它以注销,然后单击以登录。听起来很傻,但它解决了我的问题。值得一试。


尽管我运行了"git克隆ssh://[email protected]:7999/projname/proja.git"我克隆的这个新repo仍被提示输入密码,因此通过将其.git/config文件与其他有效的repo进行比较,结果发现它是[remote"origin"]部分下的URL,对于新repo,它被设置为上面的ssh路径,但是对于有效repo,它被设置为https:xxx。