ChatGPT解决这个技术问题 Extra ChatGPT

Git push results in "Authentication Failed"

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 = ############
what is your username on github and what are the contents of .git/config?
add it to the question, comments dont cope with long text
Yeah sorry, I started the comment out of habit then changed it.
Your url doesn't look right. I think it should start with https://, not http://.
@Amey Good point. This actually comes from my answer: stackoverflow.com/a/62870126/6309

b
basZero

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 git@github.com:USERNAME/REPONAME.git

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:access-token@github.com/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
P
Peter Mortensen

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

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

https://i.stack.imgur.com/NejcV.png


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.
P
Peter Mortensen

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.


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/…
A
Atif AbbAsi

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.


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.
P
Peter Mortensen

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

Run Git Bash Point to the repository directory Run git config --global credential.helper wincred


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
V
VonC

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 git@github.com: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.


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 git@github.com: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.
P
Peter Mortensen

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:

git-credential-store

git-credential-cache


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://:@
P
Peter Mortensen

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.

https://i.stack.imgur.com/V6yNw.png


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.
C
Chei

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.


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.
P
Peter Mortensen

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:

Go to Control Panel Click on User Accounts Under Credentials manager Go to Manage Windows Credentials Go to Generic Credentials Expand the Git server tab Click on Remove from vault

Also, you can click Edit and change your password stored here directly.


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.
J
Justin Herrera

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


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
You saved my time! Thanks! This worked for me.
K
Kafeaulait

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 git@bitbucket.org:user/repo

somehow worked.


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).
P
Peter Mortensen

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 Panel → Credential Manager → Windows Credentials and update you password for git:http://your_repository_address


W
William Humphries

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.


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.
f
frmbelz

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.


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.
K
Kiran Modini

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!


P
Peter Mortensen

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.


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

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.


P
Promise Preston

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@example.com"
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.

https://i.stack.imgur.com/NHzXM.png

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


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
P
Peter Mortensen

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

M
Marilynn

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.


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).
P
Peter Mortensen

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!


j
jeppoo1

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 git@github.com:user/repo.git

A
Alpesh Patil

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

git@github.com: 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

Copy local public ssh keys from ~/.ssh directory Paste to Github > Settings > SSH and GPG Keys > New SSH Key Try ssh -T git@github.com This should output Hi xxxxx! You've successfully authenticated, but GitHub does not provide shell access.


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.
P
Peter Mortensen

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.


P
Peter Mortensen

Just to chime in here, what fixed the issue for me was I simply canceled out of the initial prompt, the SSH one opened up with my Bitbucket account, I entered the password there and everything worked as expected.


P
Peter Mortensen

I was facing the same issue on Windows. Most of the time, I normally face the issue due to using multiple Git accounts. If you are on Windows, please do open the terminal as an administrator and try running the commands again. Make sure that you have the administrator access rights.


m
msanford

In case this is tangentially helpful, since this question is now a top hit for http authentication problems with git: Windows Credential Manager had stored my password correctly, and since I was using Git LFS I configured an http URL instead of the usual ssh://.

My problem was that my corporate password policy forced an account password change but I never updated my stored credentials (since I always use an ssh key).

Simply updating the password directly in the Wincred GUI worked: just look for a git:https://<your-url> entry.


O
Onat Korucu

This happened to us after forcing "Two Factor Authentication" before login from Gitlab. We had to paste the text inside id_rsa.pub to Gitlab, and then reintroduce the repository in VS code using the terminal.


A
Abhay Shekhar Yadav

https://i.stack.imgur.com/qJHv6.png

https://i.stack.imgur.com/nnulA.png

For me everything was fine, I also tried the Windows Credentials Manager but then also the problem was not resolved. Then suddenly, I got pop up from the firewall, which was the main culprit behind all. After I clicked on allow manually then I could fetch or push to GitHub.