Reputation: 4191
I recently began using two-factor authentication on GitHub, and I am now unable to use git over https on private repos in the usual way:
peter@computer:~$ git clone https://github.com/[...]/MyPrivateRepo
Cloning into 'MyPrivateRepo'...
Username for 'https://github.com': [...]
Password for 'https://[...]@github.com':
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/[...]/MyPrivateRepo/'
If I disable two-factor authentication I can use it as before:
peter@computer:~$ git clone https://github.com/[...]/MyPrivateRepo
Cloning into 'MyPrivateRepo'...
Username for 'https://github.com': [...]
Password for 'https://[...]@github.com':
remote: Counting objects: 147, done.
remote: Total 147 (delta 0), reused 0 (delta 0), pack-reused 147
Receiving objects: 100% (147/147), 22.70 KiB | 0 bytes/s, done.
Resolving deltas: 100% (87/87), done.
Checking connectivity... done.
I know I can use SSH and everything works, but is there a way I can keep two-factor authentication while still being able to use GitHub over HTTPS, for example by sending an auth token with my request?
Upvotes: 200
Views: 160261
Reputation: 1
2023 Update: I found it easy to install GitHub CLI.
Simply install the cli and run gh repo clone <repo_account_name>/<repo_name>
, which is available on the repository page.
Upvotes: 0
Reputation: 1
https://dev.to/fpeluso/how-to-clone-a-gitlab-repository-after-enabling-2fa-6oc
git clone https://oauth2:{PERSONAL ACCESS TOKEN}@github.com/[...]/MyPrivateRepo
Upvotes: 0
Reputation: 7459
As per @Nitsew's answer, Create your personal access token and use your token as your username and enter with blank password.
Later you won't need any credentials to access all your private repo(s).
Updates 2021: (It worked for my M1 Mac)
Create new Personal Access Tokens (Tick the appropriate boxes to grant permissions).
Use GitHub username
and password as your Personal Access Tokens
Upvotes: 52
Reputation: 3316
It generally comes to mind that you have set up two-factor authentication, after a few password trials and maybe a password reset. So, how can we git clone a private repository using two-factor authentication? It is simple, using access tokens.
How to Authenticate Git using Access Tokens
Wow, it works!
Upvotes: 9
Reputation: 57
1st: Get personal access token. https://github.com/settings/tokens
2nd: Put account & the token. Example is here:
$ git push
Username for 'https://github.com': # Put your GitHub account name
Password for 'https://{USERNAME}@github.com': # Put your Personal access token
Link on how to create a personal access token: https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line
Upvotes: 5
Reputation: 2148
If your repo have 2FA enabled. Highly suggest to use the app provided by github.com Here is the link: https://desktop.github.com/
After you downloaded it and installed it. Follow the withard, the app will ask you to provide the one time password for login. Once you filled in the one time password, you could see your repo/projects now.
Upvotes: 0
Reputation: 165
To everyone struggling, what worked for me was creating personal access token and then using it as a username AND password (in the prompt that opened).
Upvotes: 12
Reputation: 3662
Find out how to fix this here:
https://github.com/blog/1614-two-factor-authentication#how-does-it-work-for-command-line-git
How does it work for command-line Git?
If you are using SSH for Git authentication, rest easy: you don't need to do anything. If you are using HTTPS Git, instead of entering your password, enter a personal access token. These can be created by going to your personal access tokens page.
Upvotes: 208