Git on Bitbucket: Always asked for password, even after uploading my public SSH key
Asked Answered
D

17

250

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 [email protected]: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://[email protected]/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--

Doublebreasted answered 22/12, 2011 at 7:28 Comment(3)
Maybe Git keeps prompting me for a password could be related. Cross site: How to make git not prompt for passphrase for ssh key? on Superuser or ssh prompts for password despite .ssh/authorized_keys on U&LSlumberland
You can simply add password in your config URL, url = Nicolas_Raoul:<password>@bitbucket.org/Nicolas_Raoul/…Mokpo
Set origin URL to [email protected]: Nicolas_Raoul/therepo.git or use a command: git remote set-url origin [email protected]: Nicolas_Raoul/therepo.gitGott
H
366

Are you sure you cloned it using the ssh url?

The url for origin says url = https://[email protected]/Nicolas_Raoul/therepo.git so if it is using https it will ask for password irrespective of your ssh keys.

So what you want to do is the following:

open your config file in your current repo ..

vim .git/config

and change the line with the url from

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = https://[email protected]/Nicolas_Raoul/therepo.git

to

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = [email protected]:Nicolas_Raoul/therepo.git
Heterosexuality answered 22/12, 2011 at 7:35 Comment(12)
You are right, thanks! I had most probably clone with the wrong URL. I replaced the URL in .git/config with [email protected]:Nicolas_Raoul/therepo.git and now it works!Doublebreasted
and to change the remote using git #2433264Reverse
It was bitbucket who suggested me https url when creating a repository! How come!Tufa
Keep in mind if your bitbucket is private, if you want to use the git protocol, you need to add you ssh key to BitBuket's website in your settings.Subassembly
Had to change the URL to ssh://[email protected]/userName/repoName.git — without ssh:// prefix it didn't work.Xochitlxp
manojlds's answer plus NicolasRaoul's comment solved my problem. Thank you!Hannahhannan
Also, make sure you don't have two .gitconfig files. I had one in my home folder and one in my project. I updated the one in my project folder but forgot about the other one in home folder. Deleting the one in home folder and updating the project folder one did the trick.Gannet
I know this is a very old question. Does Bitbucket offer a setup somewhere to set ssh as default for clone? git remote set-url origin ssh://[email protected]/<account_name>/<repo_name>.git does solve the problem, but it's very tedious to change every time.Collie
Still asks me for password each time on my server :(Vanthe
Edit using sudo gedit .git/config in regular Terminal.Sonar
This answer was mega helpful, thank you so much. I had an issue where I had cloned one of my repo's using HTTPS, and since BitBucket has stopped allowing HTTPS connections, I had no idea how to switch that repo over to ssh.Trey
It hit me during an update of a submodule. Then you need to also check the submodule entries in .git/configAngola
B
50

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.

Bruyn answered 19/3, 2016 at 22:34 Comment(4)
@atilkan In that case, can you provide your machine / OS and git version info? And the error message if any when you try to set the cache setting.Bruyn
I cloned someone's repository form bitbucket, and here is my remotes. manecs-MBP:LocationTracker manec$ git remote -v origin https://[email protected]/Vysh1/locationtracker.git (fetch) origin https://[email protected]/Vysh1/locationtracker.git (push)Garey
@AjeetShah what if I entered the wrong password? would it also cache the wrong password?Labiodental
@Labiodental Why don't you try that and after that try entering correct password after clearing or disabling the cache? Edit the answer and let us know how you did that :)Bruyn
N
33

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 [email protected]:}.

Now run git remote -v to verify the changed remote url.

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

Nowadays answered 30/5, 2016 at 20:24 Comment(0)
K
20

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
Kenton answered 2/5, 2018 at 8:57 Comment(2)
This needs more attention! I spent ages looking for a solution and the first one with the config file in /.ssh works perfect!Hogg
This answers solved my problem on MacOs : cd ~/.ssh + ls + nano config (the file was already created) + add code in Vaiden's answer. Then control X + Y to save file.Bassinet
M
18

If you are using a Ubuntu system, use the following to Store Password Permanently:

git config --global credential.helper store
Married answered 9/12, 2020 at 4:18 Comment(3)
Thanks man, It solves my problem.Avalon
This command doesn't do anything on my wslHighpitched
This command is for Ubuntu OS. This command doesn't do anything when we execute it. We need to provide the git password when we clone or push any branch, after that it won't ask you again. This means after executing this command, it asks password for the first time only.Married
P
15

None of these answers helped me, turned out my issue was slightly different. It was ssh that was asking for my password each time, before sending the key. So what I had to do was link my password with this command:

ssh-add -K ~/.ssh/id_rsa

It'll then prompt you for your password and store it. This could be the solution you're looking for if each time your prompted for a password it says

Enter passphrase for key '/Users//.ssh/id_rsa':

More info here

NOTE: I used this on my mac machine successfully, but as @Rob Kwasowski pointed out below, the upper case K option is unique to mac. If not on mac you will need to use lowercase k (which probably works for mac too but I haven't tested).

Pulitzer answered 8/2, 2019 at 0:36 Comment(7)
That's great, but it should be lowercase k: ssh-add -k ~/.ssh/id_rsaPeary
could you elaborate please?Pulitzer
As explained here: ssh.com/ssh/add , the command line option is lowercase k, not uppercase as those options are case sensitive.Peary
right but the uppercase K option will add the key to the keychain as well, while lowercase k will only add the key to the agent. so what i'm asking is 'why wouldnt you want the key to also be added to your keychain?'Pulitzer
Please be aware of platform differences, -K is specific to Mac: help.github.com/en/articles/error-ssh-add-illegal-option----kPeary
Before entering in the above command (which worked) I first had to run eval "$(ssh-agent)". If I didn't I received the following error: "Could not open a connection to your authentication agent"Deadly
Thanks, this was it for me on Linux, just use lower case "-k" argumentTadpole
P
13

In the HTTP request case, it is also and alternatively possible to paste the credentials (with password) directly into the url:

http://username:[email protected]/...

This will save the pain to give your credentials every times again. Simple modify your .git/config (the url).

Polarity answered 23/11, 2015 at 9:13 Comment(2)
But not safe. And not work if the password has some letter like $%Essen
Anyone who reads this comment, please remember: just because it works, doesn't mean it's right. If you're copying your password anywhere permanently, then you're doing it wrong. Same with those who always set folder permissions to 777: stop, think, research, understand, and then do it properly.Pameliapamelina
T
5
Travistravus answered 8/4, 2016 at 19:16 Comment(3)
I think that Step 1 is for Windows and Step 2 is for Linux but you forgot it mention it properly.Bruyn
I ran those 3 steps on my Windows box and it worked.Travistravus
In that case, I would like to add that on Linux OS, we need only step2 and step3 for the same effect :)Bruyn
T
4

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.

Treblinka answered 14/12, 2017 at 16:22 Comment(0)
P
4

I cloned the repository with HTTPS URL instead of SSH URL hence even after adding the SSH Key it was asking me for password on Bash Shell.

I just edited the ./.git/config file and changed the value of url variable by simply replacing the https:// to ssh://

E.g.

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

Changed to:

[core]
        ...
        ...
        ...
[remote "origin"]
        url = ssh://<username>@bitbucket.org/<username>/<repository_name>.git
        fetch = +refs/heads/*:refs/remotes/origin/*
        ...
        ...
        ...
Pusey answered 4/7, 2019 at 9:35 Comment(0)
P
2

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.

Paillette answered 21/3, 2018 at 3:34 Comment(0)
A
2

Actually, none of these answers reflect current state of the art with Git (v2.29 by time of writing this answer). In the latest versions of Git, cache, winstore, wincred are deprecated.


If you want to clone a Bitbucket repository via HTTPS, e.g.

git clone https://[email protected]/SomeOrganization/SomeRepo.git

You have to:

  1. Generate app password at Bitbucket user administration.
  2. Setup your credential method in .gitconfig accordingly (global or local)
[credential]
    helper = manager

You can locate your .gitconfig by executing this command.

git config --list --show-origin
  1. Execute
git clone https://[email protected]/SomeOrganization/SomeRepo.git

and wait until log on window appears. Use your user name from the url (kutlime in my case) and your generated app password as a password.

Ayo answered 24/10, 2020 at 8:21 Comment(0)
S
2

If you still get too many authentication failures errors:

nano ~/.ssh/config

And paste:

Host bitbucket_james
    HostName bitbucket.org
    User james
    Port 22
    IdentitiesOnly=yes
    IdentityFile=~/.ssh/id_rsa_bitbucket_james

And most important - you should bitbucket_james alias instead of bitbucket.org when you set up your remote URL:

git remote set-url origin git@bitbucket_james:repo_owner_user/repo_name.git
Shaylashaylah answered 16/1, 2021 at 14:25 Comment(0)
M
2

The keyword here is 'ssh://' instead of https://' :-)

in your .git/config

Be aware! If you have cloned repositories, these can be re-cloned after you added your public key to BitBucket to make it work. This is probably more clean that hacking your config file ;-)

Muckrake answered 7/10, 2022 at 10:36 Comment(0)
S
0

With me, although I ran 'git clone ssh://[email protected]: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.

Selfrevealing answered 4/12, 2018 at 23:33 Comment(0)
H
0

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.

Hyps answered 19/1, 2019 at 19:34 Comment(0)
F
0

I logged in using my username instead of email and it started working.

Fou answered 2/12, 2020 at 9:18 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.