Git on Bitbucket: Always asked for password, even after uploading my public SSH key
我上传了我的
它是一个私有存储库(另一个人的私有存储库的分支),我这样克隆了它:
1 | git clone [email protected]:Nicolas_Raoul/therepo.git |
这是我当地的
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工作正常。
您确定使用ssh URL克隆了它吗?
origin的url表示
如本文所述,如果您使用ssh URL进行克隆,则不需要每次推/拉时输入用户名/密码。通过@manojlds检查上述答案
但是,如果您希望使用https进行克隆,并且希望避免每次输入用户名/密码,则可以使用以下命令将凭据存储到缓存中:
如果3600(秒)表示1小时,您可以根据需要进行更改。
上面已经回答了。我将总结上述检查步骤。
在项目目录中运行
因此,要更改远程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密钥不再保存到密钥链中。
使用
以下是3种可能的解决方案。
我成功地使用了第一种方法。我在
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在下面指出的,大写的
下面假设通过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上的等效公钥相同。
用
1 2 3 | Host bitbucket.org HostName bitbucket.org IdentityFile ~/.ssh/personal-bitbucket-ssh-key |
记住,可以使用
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。