我将~/.ssh/id_rsa.pub
上传到Bitbucket's SSH keys explained,但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
在具有相同公钥的相同环境中,Gitub上的Git工作正常
.ssh
为rwx------
,.ssh/id_rsa
为-rw-------
,.ssh/id_rsa.pub
为-rw-r--r--
答案 0 :(得分:228)
您确定使用ssh网址克隆了它吗?
原始网址为url = https://Nicolas_Raoul@bitbucket.org/Nicolas_Raoul/therepo.git
,因此如果使用https,则无论您使用ssh密钥,都会要求输入密码。
答案 1 :(得分:28)
正如here所述,如果您使用 SSH url进行克隆,则每次推/拉时不都需要输入用户名/密码。通过@manojlds
检查answer以上但是,如果您想使用 HTTPS 进行克隆,并希望每次避免输入用户名/密码,您可以将凭据存储到缓存中下面的命令:
{{1}}
其中3600(秒)表示1小时,您可以根据您的要求进行更改。
答案 2 :(得分:17)
上面已经回答了。我将总结上面要检查的步骤。
在项目目录中运行git remote -v
。如果输出显示以https://abc
开头的远程URL,则每次都可能需要用户名密码。
所以更改远程网址运行git remote set-url origin {ssh remote url address starts with mostly git@bitbucket.org:}
。
现在运行git remote -v
以验证更改的远程网址。
参考:https://help.github.com/articles/changing-a-remote-s-url/
答案 3 :(得分:9)
在HTTP请求案例中,也可以将凭证(带密码)直接粘贴到网址中:
http://username:password@bitbucket.org/...
这样可以省去每次再次提供凭据的痛苦。简单修改你的.git / config(网址)。
答案 4 :(得分:8)
未来的Google员工。
在MacOS> = High Sierra上,SSH密钥不再保存到KeyChain because of reasons。
使用ssh-add -K
也不再能够重启。
我成功使用了第一种方法。我在config
中创建了一个名为~/.ssh
的文件:
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
答案 5 :(得分:4)
第1步:安装git-credential-winstore
https://confluence.atlassian.com/bitbucketserver/permanently-authenticating-with-git-repositories-776639846.html
第2步:git config --global credential.helper'cache --timeout 3600'
这将存储您的密码1小时
答案 6 :(得分:4)
以下假设通过iTerm / Terminal对bitbucket进行命令行访问。
对于 MacOS Sierra 10.12.5,我的系统出现了一个等效的问题 - 在每个连接到bitbucket时要求我输入SSH密码。
该问题与macOS 10.12.2中的OpenSSH更新有关,这些更新在Technical Note TN2449中进行了描述。
您可能想要定制您的解决方案,但是当添加到〜/ .ssh / config文件时,以下内容将起作用:
Host *
UseKeychain yes
有关ssh配置的更多信息,请查看ssh_config的手册页:
% man ssh_config
另一件事:超级用户 here上有一篇很好的文章,会根据您的需求和设置讨论此问题和各种解决方案。
答案 7 :(得分:4)
这些答案都没有帮助我,事实证明我的问题略有不同。每次发送密码之前,都是ssh要求我输入密码。因此,我要做的就是使用以下命令链接密码:
ssh-add -K ~/.ssh/id_rsa
然后它将提示您输入密码并进行存储。如果每次提示您输入密码时提示
,这可能就是您正在寻找的解决方案输入密钥'/Users//.ssh/id_rsa'的密码:
更多信息here
注意:我已经在Mac机器上成功使用了此功能,但是正如@Rob Kwasowski在下面指出的那样,大写K
选项是mac独有的。如果不是在Mac上,则需要使用小写的k
(这可能也适用于mac,但我尚未测试)。
答案 8 :(得分:2)
我使用HTTPS URL而不是SSH URL克隆了存储库,因此即使添加了SSH密钥,它仍要求我在Bash Shell上输入密码。
我刚刚编辑了./.git/config
文件并通过将url
替换为https://
来更改了ssh://
变量的值
例如
[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/*
...
...
...
答案 9 :(得分:1)
您可能需要仔细检查您的SSH身份文件。你可能会指导BitBucket查看你在BitBucket上保存的等效公钥的不同/不正确的私钥。
使用tail ~/.ssh/config
进行检查 - 您会看到类似于:
Host bitbucket.org
HostName bitbucket.org
IdentityFile ~/.ssh/personal-bitbucket-ssh-key
请记住,可以使用ssh-add
命令添加其他身份(例如工作和家庭),例如:
ssh-keygen -t rsa -C "companyName" -f "companyName"
ssh-add ~/.ssh/companyName
一旦您确认在本地查找了哪个私钥,您就可以使用公开的等效项,在这种情况下:
cat ~/.ssh/personal-bitbucket-ssh-key.pub | pbcopy
将该密码粘贴到BitBucket上。你的git推送现在(如果你正在使用SSH克隆,前面提到的答案已经指出)可以在没有密码的情况下被允许,因为你的设备是公认的友好。
希望这有助于为某人清除它。
答案 10 :(得分:0)
尽管我运行了'git clone ssh://git@stash.xxx.com:7999 / projName / projA.git' 仍然提示我克隆的这个新仓库的密码,因此通过将其.git / config文件与其他可以正常工作的仓库进行比较,结果发现它是[remote“ origin”]部分下的url,到上面用于新存储库的ssh路径,但已将其设置为https:xxx。
答案 11 :(得分:0)
我在登录时还有其他怪异之处。我遇到了一些看起来完全愚蠢但可以正常工作的东西。只需转到MacOS的钥匙串。在边栏中找到登录锁定图标。单击它注销,然后单击登录。听起来很蠢,但它解决了我的问题。值得一试。
答案 12 :(得分:0)
实际上,这些答案中的没有 使用Git反映了最新技术水平(撰写此答案时为 v2.29 )。在最新版本的Git中,不推荐使用cache
,winstore
,wincred
。
如果您想通过HTTPS克隆Bitbucket存储库,例如
git clone https://Kutlime@bitbucket.org/SomeOrganization/SomeRepo.git
.gitconfig
中设置凭据方法[credential]
helper = manager
您可以通过执行以下命令找到您的.gitconfig
。
git config --list --show-origin
git clone https://Kutlime@bitbucket.org/SomeOrganization/SomeRepo.git
,然后等待直到出现登录窗口。使用网址中的用户名(在我的情况下为 kutlime )和生成的应用程序密码作为密码。
答案 13 :(得分:0)
我使用用户名而不是电子邮件登录,它开始工作。
答案 14 :(得分:0)
如果您使用的是Ubuntu系统,请使用以下命令永久存储密码:
android.permissions.READ_LOGS
答案 15 :(得分:0)
如果您仍然收到 too many authentication failures
错误:
nano ~/.ssh/config
并粘贴:
Host bitbucket_james
HostName bitbucket.org
User james
Port 22
IdentitiesOnly=yes
IdentityFile=~/.ssh/id_rsa_bitbucket_james
最重要的是 - 在设置远程 URL 时,您应该使用 bitbucket_james
别名而不是 bitbucket.org
:
git remote set-url origin git@bitbucket_james:repo_owner_user/repo_name.git