remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for ...
It's very weird, because I just followed the documentation and created a token two weeks ago on GitHub. The token expires on Tue, Oct 26, 2021. Why has this been removed today?
From 2021-08-13, GitHub is no longer accepting account passwords when authenticating Git operations. You need to add a PAT (Personal Access Token) instead, and you can follow the below method to add a PAT on your system.
Create Personal Access Token on GitHub
From your GitHub account, go to Settings → Developer Settings → Personal Access Token → Generate New Token (Give your password) → Fillup the form → click Generate token → Copy the generated Token, it will be something like
ghp_sFhFsSHhTzMDreGRLjmks4Tzuzgthdvfsrta
Now follow the below method based on your machine:
For Windows OS ⤴
Go to Credential Manager from Control Panel → Windows Credentials → find
git:https://github.com
→ Edit → On Password replace with with your GitHub Personal Access Token → You are DoneIf you don’t find
git:https://github.com
→ Click on Add a generic credential → Internet address will begit:https://github.com
and you need to type in your username and password will be your GitHub Personal Access Token → Click Ok and you are done
For macOS ⤴
Click on the Spotlight icon (magnifying glass) on the right side of the menu bar. Type Keychain access then press the Enter key to launch the app → In Keychain Access, search for
github.com
→ Find the internet password entry forgithub.com
→ Edit or delete the entry accordingly → You are done
For a Linux-based OS ⤴
For Linux, you need to configure the local GIT client with a usernameand email address,
$ git config --global user.name "your_github_username"$ git config --global user.email "your_github_email"$ git config -l
Once GIT is configured, we can begin using it to access GitHub.Example:
$ git clone https://github.com/YOUR-USERNAME/YOUR-REPOSITORY> Cloning into `YOUR-REPOSITORY`...Username: <type your username>Password: <type your password or personal access token (GitHub)
Now cache the given record in your computer to remembers the token:
$ git config --global credential.helper cache
If needed, anytime you can delete the cache record by:
$ git config --global --unset credential.helper$ git config --system --unset credential.helper
Now try to pull with
-v
to verify$ git pull -v
Linux/Debian(Clone as follows):
git clone https://<tokenhere>@github.com/<user>/<repo>.git
For PhpStorm
If you are using PhpStorm, go to menu Git → pull and select authentication via Personal Access Token. Enter your
PAT
it will allow you to pull/push the changes.
Git, a popular version control system, has removed support for password authentication. This change has significant implications for users who rely on password-based authentication for accessing Git repositories. Previously, users could authenticate themselves by providing their username and password. However, this authentication method has been deemed less secure due to the risk of password leaks and vulnerabilities.
With the removal of password authentication support, Git now encourages the use of alternative authentication methods. One popular method is the use of SSH keys. SSH keys provide a more secure way of authenticating users by using public and private key pairs. This method eliminates the need to enter passwords and reduces the risk of password-related security breaches.
Another alternative authentication method is the use of personal access tokens (PATs). PATs are unique tokens generated by Git hosting platforms, such as GitHub or GitLab. These tokens can be used as credentials instead of passwords. PATs offer a higher level of security compared to traditional passwords as they can be revoked or limited to specific actions.
Additionally, some Git hosting platforms have introduced support for two-factor authentication (2FA). 2FA adds an extra layer of security by requiring users to provide a second form of verification, such as a temporary code generated on a mobile device. Enabling 2FA provides an additional safeguard against unauthorized access to Git repositories.
In conclusion, the removal of password authentication support in Git highlights the importance of using more secure authentication methods. By adopting SSH keys, personal access tokens, or enabling two-factor authentication, users can enhance the security of their Git repositories and minimize the risk of unauthorized access or data breaches.
Keychain Access
.github.com
(if there are multiple GitHub logins then choose Kind: Internet password
), double-click it.And that's it. Enjoy!
github.com
and edit the password with the token
you have generated on GitHub.Now enjoy!git remote set-url origin https://<githubtoken>@github.com/<username>/<repositoryname>.git
While cloning:
git clone https://<username>:<githubtoken>@github.com/<username>/<repositoryname>.git
It will work on every OS (Mac, Windows, or Linux).
Cons: You have to remember or should need to do to each repository in your local. So I'll prefer everyone to use above mentioned steps.
For those who don't have this entry: it could be made. one way to do it is- to clone a project. then it will ask for your username and password. instead of password give it the token and then the entry would be made.
Use My Account → Settings → Developer settings → Personal access tokens → Generate new token.
git remote set-url origin https://<token>@github.com/<username>/<repo>
If your Git password is cached in credential.helper, then unset it:
git config --local --unset credential.helper
Or, If you have set your credentials globally, then:
git config --global --unset credential.helper
Now go to your GitHub Account settings
Click Developer Settings
Select Personal Access
Generate a token with the given permissions, e.g.,
Now git pull
inside your Git repository
Provide a username and the generated token as a password
That is a straightforward solution step by step.
Run nano ~/.git-credentials
. Remove the GitHub line and save it.
git config --global credential.helper store
Risky as physically the token is saved in file ~/.git-credentials
Run git pull
and provide the username and password only once
It will not ask for the username and access token again and again now!
GitHub has made changes in password authentication. If you are trying to access Git by username and password then it does not allow you. So use a personal access token instead of a password to access Git everywhere.
Here are the steps to generate personal access tokens.
Click here for Token - https://github.com/settings/tokens
Step 1 - Open GitHub and log in with your credentials.
Step 2 - Click on the Setting menu.
Step 3 - From the Setting menu click on Developer Settings
Step 4 - From the Developer Settings menu, click on Personal access token
Step 5 - From the Personal access token, click on the Generate new Token button.
Step 6 - Now fill up required details like Note, Expiration, Select scopes. And then click on the Generate Token button.
Step 7 - After that, a new token has been generated. Copy that generated token and use this token to access Git with username and token.
If you are using the Windows operating system then please follow the below step.
Open Control Panel → User Accounts → Manage your credentials → Windows Credentials.
It will show all generic credentials. Find your GitHub URL and click on that. Now click on the edit button. And then add the personal access token generated from GitHub into the password field. And click on the Save button.
Now you can access Git.
If you are accessing Git in Android Studio, if asked for a password then add the GitHub personal access token instead of your password everywhere.
This message means that you're using a password instead of a personal access token to access GitHub over HTTPS, and that's no longer allowed. GitHub has disabled password authentication because it's common for people to accidentally leak their passwords, and while a personal access token can be restricted to limit the damage, a password cannot.
If you haven't explicitly entered your password at a prompt, then it's likely you have a credential manager which is saving your password and sending it without prompting you.
You can follow the directions for clearing your credential manager listed in the Git FAQ:
$ echo url=https://account@github.com | git credential reject
You should use this same URL, but replace account
with your own username (e.g., in my case, it would look like echo url=https://bk2204@github.com
).
Then, the next time you try to push or pull, Git will prompt you for a username and password. For the username, enter your GitHub username, and for the password, generate a new personal access token on the appropriate settings page and paste it into the password field. If you're working from the command line, you may not see any indication that the password was successfully pasted; this is normal, so just hit Enter afterwards.
That will save the personal access token in your credential manager for the next time, assuming you have one set up. If you're not sure if you have one set up, run git config credential.helper
and see if it outputs anything.
If you don't have one set up, you should add one so that you don't have to memorize your token. Run one of the following commands, depending on operating system:
git config --global credential.helper manager
on Windows;git config --global credential.helper osxkeychain
on macOS;git config --global credential.helper libsecret
on Linux (if available); orgit config --global credential.helper store
on Linux if libsecret
isn't available.Then you can try the push or pull again until you're no longer prompted.
Simplest solution (May 2022):
git push
Generate an access token in GitHub from Settings → Developer settings.
If you have cloned your repository in the past and made it as origin, then you can change the authentication so,
git remote set-url origin https://<token>@github.com/<username>/<repo>.git
If you are going to clone repository after 13 August 2021, then you can use the normal clone command and set the generated access token in the password field.
For Ubuntu, use the following steps
At https://github.com/settings/tokens, go and generate a token.
git push
username: user_github_username
password: add_generated_token
instead of the password.
If your computer has no SSH key added to the GitHub account, I add information for you to do it at the end of the answer. You should do it first.
After push failed, then do this:
git remote set-url origin git@github.com:{user_id}/{project_name}.git
And push again. Then it works.
Let me show my case in the following.
(And I will guide you on how to do your case.)
At the first, when I add, commit, and push, then I meet this issue:
And then, my current Git log is the following.
In the final, this is my way to solve the issue.
In my case,
{project_name} <-> open-idea-pool
{user_id} <-> milochen0418 is the
{branch_name} <-> master
(your branch_name maybe is main, but not master)
When I push failed, the only thing I need is this one command:
git remote set-url origin git@github.com:{user_id}/{project_name}.git
Then I push it again by:
git push -u origin {branch_name}
For the example of my case,
git remote set-url origin git@github.com:milochen0418/open-idea-pool.gitgit push -u origin master
It works.
--By the way, this is the process of creating an SSH key to GitHub account.
You can refer to these two links to do it. The information here supports Mac, Windows, and Linux.
Furthermore, if you want to clone a new project, you can do the following command:
git clone git@github.com:{user_id}/{project_name}.git
If you're using macOS and do not find the github.com entry in the KeyChain access:
For Mac, go and create your token. You can only see it once. Copy it and store it securely.
Open up Terminal and run: gh auth login
*gh can be installed using Homebrew
Answer the questions. Make sure you pick HTTPS when asked.
You can force your machine to just use SSH instead of HTTPS:
git config --global url."git@github.com:".insteadOf "https://github.com/"
Go to Settings → Developer settings → generate a new token if it does not exist.
Or copy the token if it exists.
Then set the token:
git remote set-url origin https://<token>@github.com/<username>/<repo>.git/
First create the token on GitHub:
If you have not installed GitHub CLI, you would not find it in your keychain Access. Therefore you should install it first.
Install GitHub CLI for macOS
brew install gh
For Windows:
winget install ghscoop install ghchoco install gh
On the command line, enter gh auth login
, follow the prompts, and provide the following answers
? What account do you want to log into? GitHub.com
? What is your preferred protocol for Git operations? HTTPS
? Authenticate Git with your GitHub credentials? Yes
? How would you like to authenticate GitHub CLI? Paste an authentication token
Paste the token you created on GitHub and press Enter.
I was using git pull
on Linux with a password before.
If that is the case, the only thing you need to do is use token in place of password.
Generate an access token by going to Personal access tokens.
Here is example of git pull
git pullUsername for 'https://github.com': gitusernamePassword for 'https://yourusername@github.com': //Then enter generated token
Generating a GitHub personal access token (PAT)
Generate New Token
.Do not forget to copy and the token after generation. It is accessible only once.
Windows
git:https://github.com
.MAC
Keychain Access
.Set up the personal access token in GitHub:
Settings → Developer Settings → Personal access token
Open Keychain → type "GitHub"
Change the password to the personal access token.
Try commit/pushing.
Select "Always allow" and business is as usual.
To those using Sourcetree with an existing repository you must update your repository URL like sohttps://<your_token>@github.com/username/repo.git
This was taken from this answer.
If you want to clone for the first time:
git clone https://<repository_owner>:<personal_access_token>@github.com/<repository_owner>/<repo>.git
It worked!
After getting the token key as said here:
Create Personal Access Token on GitHub From your GitHub account
go to Settings => Developer Settings => Personal Access Token => GenerateNew Token (Give your password) => Fillup the form => click Generatetoken => Copy the generated Token (it will be something like
ghp_sFhFsSHhTzMDreGRLjmks4Tzuzgthdvfsrta
)
use the following in your terminal:
git clone https://your_username:your_github_token@github.com/username/private-repo.git
In Linux, you can generate a new access token in GitHub and directly replace it in place of the password in the ~.git-credentials
file.
The password section starts with :
and ends with @
.
A quick solution for Windows users
Open Credential Manager and just remove the already-saved credentials for Git: https://github.com.
After this step, run the command again for pull/push in the terminal. GitHub will ask to log in with your default browser automatically (make sure you are logged in with GitHub in the default browser).
After successful login, we got this message:
For more help related to this, you can also watch this video.
The best solution I have found so far:
Install GitHub CLI, brew install gh
or check how to install for other OSes
Type gh auth login
in your terminal
Follow through like this:
What account do you want to log into?Choose GitHub.comWhat is your preferred protocol for Git operations?Choose HTTPSAuthenticate Git with your GitHub credentials?Choose YesHow would you like to authenticate GitHub CLI?Choose Login with a web browser(Copy the one-time code and paste in the browser)Press 'Enter' to open github.com in your browser
I was not able to clone the project that was always giving this error. The solution I encouraged was, after having generated the token as the post was spoken in the post, I did as described below.
Using a personal access token for the cloning of a new project.
For cloning, also you just need to modify the URL as you have done in step 2.
The older way to clone a repository:
git clone repository_URL folder_namegit clone https://github.com/<user>/<repository> my_project
The new way of cloning with a personal access token:
git clone https://<token>@github.com/<user>/<repository> my_project
I share my solution.
Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
Create a GitHub personal access token (PAT) and copy it.
For macOS, add it to KeyChain Access under GitHub.
Spotlight Search → type KeyChain → select KeyChain Access → search for github.com → paste your PAT
For Windows, add the PAT to Windows credentials for your user.
Search → type Credential Manager → Add your PAT to github.com
If the repository is part of an organization, you will also need to sign in to that organization with your personal access token so that the organization will recognize it. If you're already signed in, sign out first.
git clone
as usual :-)
As a security precaution, GitHub automatically removes personal access tokens that haven't been used in a year. To provide additional security, we highly recommend adding expiration to your personal access tokens.
Just follow Creating a token.
For Mac users
Generate a token and set it in the keychain.
This quick video explains it well.
For Windows Users
Just instead of the keychain, you need to set up Credential Manager with the newly generated token.
Here is a quick video for Windows
After getting the token key, you can just skip all steps and go with this:
git clone https://your_username:your_github_token@github.com/username/private-repo.git
First you need SSH Key Based Authentication
And then
git config --global user.name "userName"
git config --global user.email "email"
git config --global credential.helper cache
git push
/git pull
or something user name and password (personal-token
)You can follow this video: Using personal access tokens with Git and GitHub