web-dev-qa-db-fra.com

2FA donne des problèmes lors de la poussée vers GitHub

J'ai cloné un projet sur GitHub sur mon Raspberry Pi, créé une nouvelle branche et poussé tout vers le référentiel. Pour cela, j'avais besoin des commandes suivantes:

git clone https://www.github.com/heinpauwelyn/my_repo
git checkout -b raspberry
git Push Origin raspberry

Le problème que j'ai, c'est que je ne peux pas pousser la branche vers GitHub.com. Je dois entrer mon nom d'utilisateur et mon mot de passe, mais je ne peux pas utiliser 2FA pour cela. Est-ce un bug dans Git ou GitHub et existe-t-il un moyen d'obtenir une clé d'authentification et de la saisir?

Je n'activerai pas le 2FA sur GitHub.

16
H. Pauwelyn

avec 2FA, vous devez créer un jeton d'accès personnel à utiliser comme mot de passe lors de l'authentification auprès de GitHub sur la ligne de commande avec les URL HTTPS: https://help.github.com/articles/which-remote-url-should -i-use/# when-2fa-is-enabled

ou vous pouvez cloner avec ssh https://help.github.com/articles/which-remote-url-should-i-use/#cloning-with-ssh-urls (peut également être utile : https://help.github.com/articles/generating-an-ssh-key/ )

18
pedrorijo91

Vous devez générer un jeton d'accès et utiliser le jeton d'accès à la place du mot de passe. Par exemple:

$ git clone https://github.com/username/repo.git
Username: your_username
Password: your_token

Doc: https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line

avec 2FA, vous devez générer un jeton d'accès personnel tout en appuyant sur le code. Ce jeton personnel sera utilisé comme mot de passe lors de la transmission du code à Github. Vous pouvez voir comment créer le jeton d'accès personnel à partir de https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line . Il sera utilisé lorsque vous aurez cloné le dépôt avec http url. Cela fonctionnera pour tous les dépôts.

Si vous avez cloné via SSH, vous pouvez pousser votre modification très facilement sans aucun changement de comportement normal après avoir activé l'authentification 2F. Pour cela, vous utilisez le mot de passe de la clé SSH comme mot de passe. Tout d'abord, il vous faut créer une clé SSH sur votre référentiel. Vous pouvez générer une clé SSH à partir de https://help.github.com/en/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent Il ne fonctionnera à nouveau qu'un seul référentiel uniquement pour la répétition spécifique à laquelle cette clé SSH a été générée.

2
Umar Asghar

Vous pouvez soit utiliser l'URL HTTPS du dépôt ou l'URL SSH du pour les opérations de poussée, d'extraction, de clonage ou de récupération à partir de votre serveur local après avoir ajouté 2FA sur votre compte GitHub. La différence sera:

Lors de l'utilisation de l'URL HTTPS : Maintenant, pour les opérations de poussée, d'extraction, de récupération ou de clonage, vous devez générer un Personnel jeton d'accès de votre compte GitHub et qui sera utilisé comme mot de passe chaque fois que vous serez invité à entrer un mot de passe. Vous devez garder le jeton sécurisé.

Visitez: Création d'un jeton d'accès personnel pour la ligne de commande

Lors de l'utilisation de l'URL SSH : pour pousser, tirer, récupérer ou cloner via l'URL SSH du référentiel, vous devez disposer d'une clé privée et d'une paire publique définies pour votre compte. Cela prendra un peu de temps, mais une fois que vous aurez terminé de définir vos clés privée et publique, vous ne serez jamais invité à entrer un nom d'utilisateur ou un mot de passe, car GitHub connaît désormais votre identité.

Pour créer la paire de clés privées et de clés publiques, lisez: Connexion à GitHub avec SSH

Différence entre l'utilisation de l'URL HTTPS et de l'URL SSH :

Bien que HTTPS ne soit bloqué par aucun pare-feu ou par aucun réseau, SSH peut parfois être bloqué et vous ne pourrez peut-être pas l'utiliser, mais cela arrive rarement. Lors de l'utilisation de HTTPS, comme indiqué, il vous sera demandé de saisir votre nom d'utilisateur et votre mot de passe (qui est votre jeton d'accès personnel), vous pouvez le mettre en cache à l'aide de credential.helper mais il sera enregistré en texte brut.

Alors que pour SSH, vous pouvez générer une phrase secrète pour votre clé privée, Comment ajouter un mot de passe à une clé privée OpenSSH qui a été générée sans mot de passe?

Maintenant, votre clé privée sera sécurisée mais chaque fois que vous pousserez, tirerez, clonerez ou récupérerez, le mot de passe sera demandé à chaque fois. Pour éviter cela, vous pouvez utiliser un agent SSH, Clé SSH - Toujours demander le mot de passe et la phrase secrète

0
CoderSam

Si vous avez cloné sur https et que vous souhaitez continuer à l'utiliser, pour une raison quelconque, vous pouvez modifier .git/config pour inclure le jeton d'accès personnel généré par https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command- ligne .

Un échantillon .git/config entrée:

[remote "<YOUR-REMOTE-NAME>"]
    url = https://<YOUR-USERNAME>:<YOUR-TOKEN>@github.com/<etc your repo url>

Cela met votre clé de jeton dans ce fichier texte en clair sur votre machine, ce qui est mauvais, mais si vous avez besoin d'un hack rapide pour faire avancer les choses, cela fonctionne.

À votre santé!

0
J.Z.