可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I uploaded my ~/.ssh/id_rsa.pub
to Bitbucket's SSH keys as explained, but Git still asks me for my password at every operation (such as git pull
). Did I miss something?
It is a private repository (fork of another person's private repository) and I cloned it like this:
git clone git@bitbucket.org:Nicolas_Raoul/therepo.git
Here is my local .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
In the same environment with the same public key, Git on Github works fine.
.ssh
is rwx------
, .ssh/id_rsa
is -rw-------
, .ssh/id_rsa.pub
is -rw-r--r--
回答1:
Are you sure you cloned it using the ssh url?
The url for origin says url = https://Nicolas_Raoul@bitbucket.org/Nicolas_Raoul/therepo.git
so if it is using https it will ask for password irrespective of your ssh keys.
回答2:
As explained here, if you clone with SSH url, you don't need to enter username / password each time you push / pull. Check above answer by @manojlds
But if you want to clone with HTTPS and want to avoid entering username / password each time, you can store credentials into cache with below command:
git config --global credential.helper 'cache --timeout 3600'
where 3600 (seconds) means 1 hour, you may change it as per your requirement.
回答3:
Its already answered above. I will summarise the steps to check above.
run git remote -v
in project dir. If the output shows remote url starting with https://abc
then you may need username password everytime.
So to change the remote url run git remote set-url origin {ssh remote url address starts with mostly git@bitbucket.org:}
.
Now run git remote -v
to verify the changed remote url.
Refer : https://help.github.com/articles/changing-a-remote-s-url/
回答4:
In the HTTP request case, it is also and alternatively possible to paste the credentials (with password) directly into the url:
http://username:password@bitbucket.org/...
This will save the pain to give your credentials every times again. Simple modify your .git/config (the url).
回答5:
Hello Googlers from the future.
On MacOS >= High Sierra, the SSH key is no longer saved to the KeyChain because of reasons.
Using ssh-add -K
no longer survives restarts as well.
Here are 3 possible solutions.
I've used the first method successfully. I've created a file called config
in ~/.ssh
:
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
回答6:
Step 1: Install git-credential-winstore
https://confluence.atlassian.com/bitbucketserver/permanently-authenticating-with-git-repositories-776639846.html
Step 2: git config --global credential.helper 'cache --timeout 3600'
This will store your password for 1 hour
- Step 3: Run a git command
that will prompt you for your password and the credential will prompt
and store your password
回答7:
The following assumes command-line access via iTerm / Terminal to bitbucket.
For MacOS Sierra 10.12.5, my system manifested an equivalent problem - asking for my SSH passphrase on each connection to bitbucket.
The issue has to do with OpenSSH updates in macOS 10.12.2, which are described here in Technical Note TN2449.
You very well might want to tailor your solution, but the following will work when added to your ~/.ssh/config file:
Host *
UseKeychain yes
For more information on ssh configs, take a look at the man pages for ssh_config:
% man ssh_config
One other thing: there is a good write-up on superuser here that discusses this problem and various solutions depending on your needs and setup.
回答8:
You may need to double-check your SSH identities file. You may be guiding BitBucket to look at a different/incorrect private key to the equivalent public key that you have saved on BitBucket.
Check it with tail ~/.ssh/config
- you will see something similar to:
Host bitbucket.org
HostName bitbucket.org
IdentityFile ~/.ssh/personal-bitbucket-ssh-key
Remember, that adding additional identities (such as work and home) can be done with the ssh-add
command, for example:
ssh-keygen -t rsa -C "companyName" -f "companyName"
ssh-add ~/.ssh/companyName
Once you have confirmed which private key is being looked at locally, you can then take your public equivalent, in this case:
cat ~/.ssh/personal-bitbucket-ssh-key.pub | pbcopy
And paste that cipher onto BitBucket. Your git pushes will now (provided you are using the SSH clone as aforementioned answers have pointed out) be allowed without a password, as your device is a recognised friendly.
Hopefully this helps clear it up for someone.
回答9:
With me, although I ran 'git clone ssh://git@stash.xxx.com:7999/projName/projA.git'
I was still being prompted for password for this new repo that I cloned, so by comparing its .git/config file to other repos that work, It turned out to be the url under the [remote "origin"] section, it was set to the ssh path above for the new repo, but was set to https:xxx for the working one.
回答10:
I was having other weirdness around logging in. I came across something that seemed totally dumb but worked in my case. Simply go to MacOS's keychain. Find the login lock icon in the sidebar. Click it to logout and then click to login. Sounds dumb but it solved my issues. Worth a shot.