1254

I have been using GitHub for a little while, and I have been fine with git add, git commit, and git push, so far without any problems. Suddenly I am having an error that says:

fatal: Authentication Failed

In the terminal I cloned a repository, worked on a file and then I used git add to add the file to the commit log and when I did git commit, it worked fine. Finally, git push asks for username and password. I put those in correctly and every time I do this, it says the same error.

What is the cause of this problem and how can I fix it?

The contents of .git/config are:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        url = http://www.github.com/######/Random-Python-Tests
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master
[user]
        name = #####
        email = ############
15
  • what is your username on github and what are the contents of .git/config? Commented Jul 15, 2013 at 16:38
  • add it to the question, comments dont cope with long text Commented Jul 15, 2013 at 16:40
  • Yeah sorry, I started the comment out of habit then changed it. Commented Jul 15, 2013 at 16:45
  • Your url doesn't look right. I think it should start with https://, not http://. Commented Jul 15, 2013 at 17:57
  • 1
    @Amey Good point. This actually comes from my answer: stackoverflow.com/a/62870126/6309 Commented Nov 16, 2021 at 7:03

57 Answers 57

1827

If you enabled two-factor authentication in your GitHub account you won't be able to push via HTTPS using your accounts password. Instead you need to generate a personal access token. This can be done in the application settings of your GitHub account. Using this token as your password should allow you to push to your remote repository via HTTPS. Use your username as usual.

Creating a personal access token

You may also need to update the origin for your repository if it is set to HTTPS. Do this to switch to SSH:

git remote -v
git remote set-url origin [email protected]:USERNAME/REPONAME.git
Sign up to request clarification or add additional context in comments.

20 Comments

Indeed. +1. I present PAT here stackoverflow.com/a/19223896/6309 and detail the process there: stackoverflow.com/a/18607931/6309
I needed to freshly generate my rsa keys for normal Git operations to work after enabling 2FA.
Thank you! Just had this error and this helped, just to point out. Once you've created your personal access token you copy that then when your pushing the repo, it'll ask for your username and password. Paste the Access Token in the Password
you can also do git remote add origin https://username:[email protected]/username/repo.git to store your personal access token.
For me, all I had to do was enable SSH authentication from my local machine on my GitHub account, and then switch to the ssh git remote address; help.github.com/articles/changing-a-remote-s-url
|
1036

On Windows, try the below steps to edit or remove the saved credentials:

  1. Click Start
  2. Type: Credential Manager (on Windows 10, this is under "StartSettings". Then search for "Credential Manager")
  3. See the Windows Credentials Manager shortcut and double-click it to open the application.
  4. Once the application is open, click on the Windows Credentials tab.
  5. Locate the credentials that you want to remove/update. They will start with "git:" and might begin with "ada:"
  6. Click on the credential entry. It will open a details view of the entry.
  7. Click Edit or Remove as required and confirm.
  8. Later rinse and repeat as necessary.

Enter image description here

12 Comments

In my case it is not in "Windows Credentials" but is on "Generic Credentials". Remove the credential do the trick.
You can open the above window by (windows + R) -> "control /name Microsoft.CredentialManager"
My employer set windows authentication to Git Hub, so every time I changed my windows credentials I had to update it for source control. Your answer worked.
Fantastic answer. We maintain an internal BitBucket repository, where each of our account credentials are authenticated to our organization. Recently all of my repositories became unavailable for pushing code changes. While I had been able to change credentials on a case per case basis, I really did not want to do this for every project. @Pradeep's approach allowed me to solve the underlying cause, which was more than simply a password change. Our organization recently changed the name of the internal domain, so by editing the credentials centrally, I was able to fix all of my projects.
This should be the selected answer.
|
194

Maybe you have changed the password recently for you Git account. You could try the git push line with the -u option:

git push -u origin branch_name_that_you_want_to_push

After executing the above command, it will ask for a password. Provide your updated password.

6 Comments

this works, which my environment need be https only
Certainly a lot easier than most answers. (And changing passwords should be the most common reason to get an authentication error ;-) )
if you are experiencing this on a existing clone - then just do a git push -u
I deleted my credentials from Windows Credential Manager and this command triggered the login dialog. Thanks!
This solution is no longer valid: Git will notify with "Support for password authentication was removed on August 13, 2021. Please use a personal access token instead." and recommend to follow this link: github.blog/…
|
139

It happens if you change your login or password of git service account (Git). You need to change it in Windows Credentials Manager too. type "Credential Manager" in Windows Search menu open it.

Windows Credentials Manager->Windows Credential and under Generic Credentials edit your git password.

6 Comments

This saved me when working with GitLab (when pretty much nothing else helped). Thanks!
I had never heard of this windows credentials manager.... Thanks !
I gave wrong credentials when Git prompted me for user id and password while pushing new files to remote repository. When I ran push command again git did not prompt me for credentials but instead it was only throwing authentication failed error. I realised after reading this answer that git uses credentials stored in credential manager and that should be the reason git does not prompt for password everytime we push into remote respository. I deleted the git password in credential manager after which git again prompted me for user id and password.
You can open the above window by (windows + R) -> "control /name Microsoft.CredentialManager"
Simplest and fastest fix IMO.
|
124

Basically my credential was expired, and I was facing the issue.

The following two commands helped me:

git config --global --unset credential.helper

git config credential.helper store

It will ask you for credentials next time when you try to push.

Follow the below guidelines for more details for secured and unsecured storage of the user name and passwords:

4 Comments

This works great on Mac after a password expiration.
I did that and it still does not prompt for the credentials. I also removed the user credentials from Windows password manager. I went through almost all answers here, but didn't help any suggestions? it only works when I put credentials in the address e.g. git push https://<user>:<pwd>@<bitbucketaddress>
For me and Windows 10, it worked perfectly.
This answer pointed me towards looking into my .gitconfig file, which is what I ended up needing to do.
118

On Windows, this worked for me, and it also remembers my credentials:

  1. Run Git Bash

  2. Point to the repository directory

  3. Run git config --global credential.helper wincred

5 Comments

Took me a while to find out what that does -- it uses the Credential Manager in the Windows Control Panel. To stop using it: git config –global credential.helper unset Source, and more details in this answer.
@IanW Do you mean git config --global --unset credential.helper? That's what worked for me in Git Bash.
Be careful with this command it will replace the real path to your credential helper with simply "wincred" which apparently not what you need.
I ran this command to find out it's not what i wanted, the proper way to unset is git config --global --unset credential.helper. Ultimately, I restored my correct setting with git config credential.helper store.
On a Mac, after answering the web capcha, this worked for me: git config --global credential.helper osxkeychain
105

First, you can make sure to use the proper URL:

git remote set-url origin https://github.com/zkirkland/Random-Python-Tests.git

Then, if it was working before, and if it wasn't asking for your username, it must be because you had stored your credentials (login/password) in a $HOME/.netrc file, as explained here. You can double check those settings, and make sure that your proxy, if you have one, hasn't changed.

Check the output of git config --global credential.helper.
And make sure the credentials are your GitHub user account, and a PAT (Personal Access token).

You can update your credentials using the Git credential helper, as in here.


If that still doesn't work, you can switch to an SSH URL:

git remote set-url origin [email protected]:zkirkland/Random-Python-Tests.git

But that means you have published your SSH public key in your Account settings.


For Visual Studio Code specifically, see also "git push: Missing or invalid credentials. fatal: Authentication failed for 'https://github.com/username/repo.git'"

You can unselect the setting git.terminalAuthentication to avoid the error message.

5 Comments

Switching from HTTPS to SSH solved the problem for me.
I had enabled 2-factor authentication for my GH account and switching the remote url to SSH from HTTPS resolved the "authentication failed" issue for me. Makes sense. Thanks!
This also solved the problem for me. After I switched to two-factor authentication, I set up a public key in my GitHub account.
Having incorrect URL was indeed my issue, I mistakenly changed https:// to git://, while I needed [email protected]:user.repo.git. Strange that git didn't report the issue somehow, just silent hanging
@AlexeyLarionov Since git:// is a valid (albeit obsolete) protocol, it simply tried and use it, waiting for a remote server to listen on port 9418.
44

On Windows, if you found an authentication error problem when you entered the correct password and username, it's a Git problem. To solve this problem, when you are installing the Git in your machine, uncheck the Enable Git Credential Manager option.

Enter image description here

4 Comments

I don't find this type of solution. I have re installed the git
Fixed my trouble too (git was installed, just reinstalled it wich unchecking this : and it's ok !)
I had to check "Use the native Windows Secure Channel library" too. It isn't checked by default.
Reinstalling git works fine for me. Download the newest installer. Enable newest feature of git credential manager during installation. Before you push the repo. A window will pop-up and you will be able to login via browser.
35

I was getting the same error. I tried all the solutions whichever mentioned in this page, but they didn't work. Finally, I found the solution.

These kinds of error comes if sometimes your system password has changed recently anytime. It will try to validate from the old password. So, follow these steps:

  1. Go to Control Panel
  2. Click on User Accounts
  3. Under Credentials manager
  4. Go to Manage Windows Credentials
  5. Go to Generic Credentials
  6. Expand the Git server tab
  7. Click on Remove from vault
  • Also, you can click Edit and change your password stored here directly.

2 Comments

This is an exact duplicate of what user Sherlock posted more than a year prior and deleted 3 minutes before this answer was posted.
I don't have a Credentials Manager under User Accounts. I am running Manjaro.
31

I think that for some reason GitHub is expecting the URL to NOT have subdomain www. When I use (for example)

git remote set-url origin https://www.github.com/name/repo.git

it gives the following messages:

remote: Anonymous access to name/repo.git denied
fatal: Authentication failed for https://www.github.com/name/repo.git

However, if I use

git remote set-url origin https://github.com/name/repo.git

it works perfectly fine. Doesn't make too much sense to me... but I guess remember not to put www in the remote URL for GitHub repositories.

Also notice the clone URLs provided on the GitHub repository webpage doesn't include the www.

2 Comments

Not putting "www" on "github.com" works. Since that matters, Github should fix their site so you can't clone using "www".
Thank you : ) My url was missing the .git, and this comment got me to take a look at it and figure it out.
26

Before you try everything above, try to git push again, yes it works on me.

3 Comments

It asks for username and password when you do 'git push' again atleast in my case, enter your credentials and you are good to go
Yes on Visual Studio code it asks for password when you try again. Thanks for the solution.
Too bad this answer is so low. Definitely the simplest step to take first. Thanks.
17

The same error (Windows, Git Bash command line). Using https which should prompt for login credentials but instead errors:

$ git pull origin master
fatal: Authentication failed for 'https://github.com/frmbelz/my_git_project.git'
$ git config -l
...
credential.helper=manager
...

$ git config --global --unset credential.helper
$ git config --system --unset credential.helper

git pull now prompted for username/password prompts.

1 Comment

I feel compelled to comment because I was starting to lose hope, none of these answers were working for me, but those last two commands ensured git asked me for my new credentials. Thank you.
15

I'm not really sure what I did to get this error, but doing:

git remote set-url origin https://...

didn't work for me. However:

git remote set-url origin [email protected]:user/repo

somehow worked.

2 Comments

You switched from https to ssh
It works for me as well. This is not magic, it is because I have stored configuration for ssh access (with a public key configured), which are not picked up for https access (which is user/pass + MFA).
14

I was adding to Bitbucket linked with Git and had to remove the stored keys, as this was causing the fatal error.

To resolve, I opened the command prompt and ran

 rundll32.exe keymgr.dll, KRShowKeyMgr

I removed the key that was responsible for signing in and next time I pushed the files to the repo, I was prompted for credentials and entered the correct ones, resulting in a successful push.

1 Comment

Perfect! This is a quick and short solution, worked for me in an instant for bitbucket. If this issue repeats after editing the password, remove the logon. New creds for git are prompted when doing a git operation like pull or push.
13

I've ran into

git fetch

fatal: Authentication failed for 'http://...."

after my Windows password had expired and was changed. Multiple fetches, reboot and even reinstall of Git with Windows Credential Manager didn't help.

Surprisingly the right answer is somewhere here in comments, but not in answers (and some of them are really weird!).

You need to go to Control PanelCredential ManagerWindows Credentials and update you password for git:http://your_repository_address

Comments

11

In my case, I recently changed my windows password and I have SSH key configured for git related actions (pull, push, fetch etc.,), after I encountered the "fatal: Authentication failed" error, I updated my password in the windows credential manager (Control Panel\User Accounts\Credential Manager)for all items starting with git:..., and tried again, worked this time!

Comments

9

I had the same problem. I set the URL in this way:

git remote set-url origin https://github.com/zkirkland/Random-Python-Tests.git

I also removed this entry from the configuration file: askpass = /bin/echo.

Then "git push" asked me for username and password and this time it worked.

1 Comment

I didn't need to remove from config file this entry: askpass = /bin/echo.
8

If you have enabled the two-factor authentication on your GitHub account, then sign in to your GitHub account and go to

New personal access token

to generate a new access token, copy that token, and paste as a password for authentication in the terminal.

Comments

4

I started experiencing this issue on Visual Studio Code in Ubuntu 20.04 yesterday.

I did not make any changes to my GitHub credentials, neither did I change anything in the project, but I run any git command to communicate with my remote branch like:

git pull origin dev

I get the error below:

remote: Repository not found. fatal: Authentication failed for 'https://github.com/MyUsername/my-project.git/'

Here's what worked for me:

I tried recloning the project and then running the git pull command but it did not work.

git clone https://my-git-url

I tried setting my credentials again using the below commands but still no luck:

git config --global user.email "[email protected]"
git config --global user.name "John King"

I tried removing the remote repository and re-adding it using the below commands, but still no luck:

git remote remove origin
git remote add origin https://my-git-url

Finally, I decided to try using my default Ubuntu terminal and it worked fine. My big guess is that it's a bug from Visual Studio Code from the last update that was made some few hours before then (See the screenshot that shows that a Release was done on the same day that I was having the issue). I mean I set up Visual Studio Code using snap, so probably it might have been updated in the background a few hours before then.

enter image description here

Hopefully, they will get it fixed and git remote operations will be fine again.

2 Comments

Having the same issues, VScode on ubuntu 20.04. Did you find a solution to make the integrated terminal to work? (I'm using bash)
Thanks, same issue here. Luckily I found your post right away
4

Just from your .config file change:

url = http://www.github.com/###user###/Random-Python-Tests

To:

url = http://###user###@github.com/###user###/Random-Python-Tests

Comments

4

The question was asked way before Two-Factor Authentication was introduced by GitHub, however, many people are encountering this error ever since GitHub introduced 2FA.

GitHub asks for authentication every time you try to push, if you want to avoid getting prompted repeatedly, you should use github-cli which is very lightweight and you can install with apt, yum, dnf and pacman.

after installing github-cli,

  1. Type this command
gh auth login
  1. Select the account type to authenticate
  2. Select HTTPS or SSH (as desired)
  3. Login with a web browser or authenticate with access tokens as per your ease.

Access tokens can be generated from GitHub > Settings > Developer-settings > Generate Access token, copy the token, and paste it into the terminal, It is a one-time code so ensure that you do not lose the code before authenticating it on the terminal

3 Comments

This worked for me and seems like the easiest solution in 2023.
This is by far the easiest solution. Thanks a bunch man, done upvoting your answer.
great solution, should be the accepted one!
3

Got the above error message when I updated my computer password. Reset my git credentials using the following steps:

Go to Control Panel > User Accounts > Credential Manager > Windows Credentials. You will see Git credentials in the list (e.g. git:https://). Click on it, update the password, and execute git pull/push command from your Git bash and it won't throw any more error messages.

1 Comment

You're a lifesaver, I was just about to give up and send an email to Support when I saw this answer, since the same thing was happening to me (no clue why windows credentials didn't update automatically like the last time I had to change my computer password, but oh well).
3

If you are on Windows and trying to push to a Windows server which has domain users working as repository users (TFS), try getting into the TFS URL (i.e. http:\\tfs) with Internet Explorer. Enter your domain account credentials and let the page appear.

Caution: Only use Internet Explorer! Other browsers won’t change your system credentials.

Now go to Git Bash and change your remote user for the repository like below:

git config user.name "domainName\userName"

And done. Now you can push!

Comments

3

For me it worked in windows10+scoop+cmder by configuring the windows credential manager:

git config credential.helper manager
git push

Comments

2

I tried the token verification method and got it to work ~3 times and wasted around 2 hours of time for that. For some reason it does not work very well for our company.

My solution was to change the authentication method from HTTPS to SSH. Here is a Github guide (https://help.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent).

After you have created the SSH key, remember to change the SSH address origin:

git remote add origin [email protected]:user/repo.git

Comments

2

I was getting below error when trying to push to github remote

[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Solution SSH Keys were missing on github account

  1. Copy local public ssh keys from ~/.ssh directory

  2. Paste to Github > Settings > SSH and GPG Keys > New SSH Key

  3. Try ssh -T [email protected] This should output

    Hi xxxxx! You've successfully authenticated, but GitHub does not provide shell access.

2 Comments

What does option -T do in ssh? And why is it not listed here ssh.com/academy/ssh/command#ssh-command-line-options?
The -T option will disable pseudo terminal allocation while connecting to a Git remote server over SSH. Git server will respond to SSH request having -T option.
2

For me, I forgot that I had changed the password on github.com, and my keychain for shell authentication never updated to that new password.

Deleting everything Git from my keychain and then rerunning the Git request helped solve the issue, prompting me again for the new password.

Comments

2

If you are using SSH and cloned with HTTPS, this will not work.

Clone with SSH and then push and pulls should work as expected!

Comments

2

the quick GUI way of doing is:

  1. Firstly generate an access token via create app access token.
  2. then goto sourceTree's Settings(placed under the close button of the Source tree)
  3. A prompt will appear named "Repository Settings".
  4. There add/edit your repository path with https://USER_NAME:[email protected]/REPO_NAME/PROJECT_NAME.git

or for github account

https://username:[email protected]/username/repo.git

Here the only change to mention is adding the additional accessToken generated by the above shared create app access token link into existing path url.

1 Comment

In my case, I was using the password for DevOps login when Git request password after user has ben entered; I was wrong since I needed to enter password provided with the creation of Personal Access Token (PAT) - that password shows a warning that it must be copied, since won't be shown again -. In summary, provide Git credentials as user and pwd showed in that creation step.
2

In Sourcetree Go to Tools -> Options -> Authentication

On Your Email Id click on Edit and click on Refresh OAuth Token.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.