web-dev-qa-db-fra.com

L'authentification Git échoue après l'activation de 2FA

Je viens d'activer 2FA (je ne pense à aucune autre modification que j'ai apportée) et git a demandé mon nom d'utilisateur et mon mot de passe. J'ai fourni les deux, mais ils avaient "tort". J'ai essayé de nombreuses solutions ici: Git Push nécessite un nom d'utilisateur et un mot de passe mais cela n'a pas fonctionné. En particulier, lors du passage de https à ssh, la clé ssh donne

Autorisation refusée (publickey). fatal: impossible de lire à partir du référentiel distant.

$ git Push
warning: Push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:

  git config --global Push.default matching

To squelch this message and adopt the new behavior now, use:

  git config --global Push.default simple

See 'git help config' and search for 'Push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)

Username for 'https://github.com': **********
Password for 'https://[email protected]': 
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/mlbileschi/scala.git/'

Des conseils?

73
Max Bileschi

Vous devez générer un jeton d'accès. Vous pouvez en créer un en allant sur votre page des paramètres .

enter image description here

Utilisez ce jeton d'accès comme mot de passe dans la ligne de commande.

89
Gergo Erdosi

Une solution de bout en bout prend 3 étapes.

  1. Bravo à Gergo Erdosi. Sa réponse est en grande partie juste, c'est juste que Github change cette page de réglage. À la fin de 2016, vous devez générer un jeton d'accès à partir de votre page des jetons d'accès personnels .

    enter image description here

    Utilisez ce jeton d'accès comme mot de passe dans la ligne de commande.

  2. Vous pouvez conserver votre nom d'utilisateur en l'incluant dans l'URL distante de votre projet. Une des façons de le faire est de modifier votre .git/config pour modifier la ligne url au format suivant:

    url = https://[email protected]/owner/repo.git

  3. Vous pouvez conserver votre mot de passe en l'exécutant une seule fois:

    $ git config credential.helper store

    puis vos futurs mots de passe git seront stockés dans ~/.git-credentials, en clair, au format https://user:[email protected].

    Le stockage des mots de passe en texte brut serait normalement considéré comme un risque pour la sécurité. Mais dans ce cas 2FA, les informations d'identification ne sont PAS votre vrai mot de passe, c'est une chaîne générée de manière aléatoire. Il est donc aussi sûr que d'utiliser une clé privée ssh une clé privée ssh sans phrase de passe. CAVEAT: gardez à l'esprit que, si vous utilisez également un autre compte git sans 2FA sur cette machine, ces vrais mots de passe seront également stockés en texte clair.

PS: Alternativement, vous pouvez choisir d'utiliser une connexion basée sur ssh, en utilisant une clé privée ssh protégée par mot de passe, ce qui serait plus sécurisé et moins pratique, mais cela sort du cadre de cette réponse.

27
RayLuo

J'avais un problème similaire. J'ai dû modifier l'URL utilisée dans la commande git pour inclure mon nom d'utilisateur.

git Push https://[email protected]/mlbileschi/scala.git

Ensuite, quand il demande à PW d'utiliser le jeton d'accès que vous avez créé en suivant les instructions de la réponse de Gergo Erdosi.

13
Jester

Sous linux, vous pouvez authentifier votre identité GitHub à l'aide d'une clé SSH.

1) Génération d'une nouvelle clé SSH ( source )

Terminal ouvert.

Collez le texte ci-dessous, en le remplaçant dans votre adresse e-mail GitHub.

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Cela crée une nouvelle clé ssh, en utilisant l'e-mail fourni comme étiquette.


2) Lier la clé à votre compte GitHub

Ouvrez le terminal et copiez la clé publique générée

cat ~/.ssh/id_rsa.pub

Doit produire quelque chose comme

ssh-rsa AAAAB3NzaC1y ... mKAKw== [email protected]

Accédez à https://github.com/settings/keys et cliquez sur New SSH Key, donnez-lui un titre et copiez-collez la clé publique.

enter image description here


3) Modifiez l'origine de git de https:// à ssh

Ouvrez le terminal, cd à l'emplacement et au type de votre référentiel

git remote set-url Origin [email protected]:<github username>/<repository name>
7
Jossef Harush

Cela a fonctionné pour moi:

  • Accédez à [votre-git-repo] /. Git/config

  • En dessous de [remote "Origin"] Modifiez la clé URL du protocole http à git.

Exemple

Si la valeur de url est https://github.com/ . Git changez-la en [email protected]:<repo-url>.git

1
imsinu9