我上传了我的~/.ssh/id_rsa。但是Git仍然会在每次操作(比如Git pull)时询问我的密码。我错过什么了吗?

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

git clone git@bitbucket.org:Nicolas_Raoul/therepo.git

这是我本地的。git/config:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = https://Nicolas_Raoul@bitbucket.org/Nicolas_Raoul/therepo.git
[branch "master"]
        remote = origin
        merge = refs/heads/master

在相同的环境下,使用相同的公钥,Github上的Git可以正常工作。 . ssh rwx -, . ssh / id_rsa - r -------, . ssh / id_rsa。Pub是-rw-r——r——


当前回答

这里的关键字是'ssh://'而不是https://':-)

在你的。git/config中

请注意!如果你已经克隆了存储库,在你将你的公钥添加到BitBucket后,这些存储库可以重新克隆。这可能比侵入你的配置文件更干净;-)

其他回答

实际上,这些答案都没有反映Git的当前技术状态(在撰写本文时是v2.29)。在最新版本的Git中,cache、winstore、wincred已弃用。


如果你想通过HTTPS克隆一个Bitbucket存储库,例如。

Git 克隆 https://Kutlime@bitbucket.org/SomeOrganization/SomeRepo.git

你必须:

在Bitbucket用户管理中生成应用程序密码。 相应地在.gitconfig中设置凭据方法(全局或本地)

[credential]
    helper = manager

您可以通过执行此命令找到您的.gitconfig。

git config --list --show-origin

执行

git clone https://Kutlime@bitbucket.org/SomeOrganization/SomeRepo.git

并等待,直到登录窗口出现。使用url中的用户名(在我的例子中是kutlime)和您生成的应用程序密码作为密码。

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

url的来源说url = https://Nicolas_Raoul@bitbucket.org/Nicolas_Raoul/therepo.git,所以如果它是使用https,它会要求密码,不管你的ssh密钥。

所以你要做的是:

在当前的repo中打开配置文件。

一个git / problem。

并更改包含url的行

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = https://Nicolas_Raoul@bitbucket.org/Nicolas_Raoul/therepo.git

to

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = git@bitbucket.org:Nicolas_Raoul/therepo.git

下面假设通过iTerm / Terminal命令行访问bitbucket。

对于MacOS Sierra 10.12.5,我的系统出现了一个同样的问题——在每个连接到bitbucket时都要求我的SSH密码。

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

您很可能想要定制您的解决方案,但是当添加到您的~/时,以下内容将会起作用。ssh /配置文件:

Host *
    UseKeychain yes

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

% man ssh_config

还有一件事:这里有一篇关于超级用户的很好的文章,讨论了这个问题,并根据您的需求和设置提供了各种解决方案。

与我,虽然我运行'git克隆ssh://git@stash.xxx.com:7999/projName/projA.git' 我仍然被提示输入我克隆的这个新回购的密码,所以通过比较它的.git/配置文件与其他工作的回购,它原来是[远程“origin”]部分下的url,它被设置为ssh路径上面的新回购,但被设置为https:xxx的工作。

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

http://username:password@bitbucket.org/...

这样就省去了每次都要提交你的证书的麻烦。简单地修改你的.git/config (url)。