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


当前回答

你好,来自未来的谷歌人。

在MacOS >= High Sierra操作系统下,由于某些原因SSH密钥不再保存到KeyChain中。

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

这里有3种可能的解决方案。

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

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa

其他回答

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

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

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

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

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

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

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

我用HTTPS URL克隆了存储库,而不是SSH URL,因此即使在添加SSH密钥后,它也在Bash Shell上询问我的密码。

我只是编辑了。/。并通过简单地将https://替换为ssh://来改变url变量的值

E.g.

[core]
        ...
        ...
        ...
[remote "origin"]
        url = https://<username>@bitbucket.org/<username>/<repository_name>.git
        fetch = +refs/heads/*:refs/remotes/origin/*
        ...
        ...
        ...

更改为:

[core]
        ...
        ...
        ...
[remote "origin"]
        url = ssh://<username>@bitbucket.org/<username>/<repository_name>.git
        fetch = +refs/heads/*:refs/remotes/origin/*
        ...
        ...
        ...

我登录的时候还有其他奇怪的地方。我遇到了一些看起来很蠢的东西,但对我来说很有用。只需进入MacOS的钥匙链。在侧边栏中找到登录锁图标。单击可退出,再单击可登录。听起来很蠢,但它解决了我的问题。值得一试。

实际上,这些答案都没有反映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)和您生成的应用程序密码作为密码。