我上传了我的~/.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——


当前回答

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

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

因此,要更改远程url,请运行git remote set-url origin {ssh远程url地址以git@bitbucket.org:}开头。

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

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

其他回答

如果您使用的是Ubuntu系统,请使用以下方法永久存储密码:

git config --global credential.helper store

您确定您使用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

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

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

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

正如这里所解释的,如果您使用SSH url克隆,您不需要在每次推/拉时输入用户名/密码。检查上面@manojlds的回答

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

Git配置——全局凭据。Helper '缓存超时3600'

其中3600(秒)表示1小时,您可以根据自己的需求更改。

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

在你的。git/config中

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