Les dépôts GitHub clonés demandent un mot de passe, tandis que ceux créés à l'origine ne le font pas

9

Je viens de perdre un tas de référentiels de mon disque, donc je les ai clonés depuis GitHub. Ceux-ci demandent maintenant un nom d'utilisateur et un mot de passe chaque fois que je pousse quelque chose vers GitHub. Ceux qui n'ont pas été supprimés ne le font pas.
La seule solution que j'ai lue pour se débarrasser de l'invite de nom d'utilisateur / mot de passe est de générer la clé ssh. Le fait est que j'ai déjà une clé, sinon je ne pourrais pas pousser sans invites dans ces dépôts, que je n'ai pas cloné.

J'ai regardé git configdeux de mes référentiels, un que je peux pousser sans mot de passe et un que j'ai cloné. La seule différence était branch.master.remoteet les branch.master.mergeparamètres, que je désactive, ce qui fait git configla même chose. Mais l'invite est toujours là.

Je ne suis même pas sûr que la génération d'une nouvelle clé ssh fonctionnera. Quelles sont mes options?

usr
la source
Veuillez consulter help.github.com/ssh-issues et donner plus de détails. Que se passe-t-il lorsque vous essayez de SSH?

Réponses:

21

Ma conjecture:

Vos anciens référentiels utilisaient des télécommandes ( [email protected]:ou ssh://[email protected]/préfixes) SSH , qui utilisaient l'authentification par clé publique. (En fait, le serveur Github SSH ne demande jamais de mot de passe.)

Vos nouveaux référentiels utilisent des télécommandes HTTP ( ), qui ne prennent en charge que l' authentification HTTP Basic par mot de passe et n'utilisent pas vos clés SSH.https://username@github.com/

Modifiez vos URL distantes pour utiliser à nouveau SSH. Utilisez git remote set-urlou modifiez .git/configpour ce faire. Remplacer

https: // username @ github.com / username /repo.git

avec juste

[email protected]: nom d'utilisateur /repo.git

Vous pouvez même avoir une entrée dans votre ~/.gitconfigqui indique à git de traduire les URL distantes de HTTP ou Git en SSH.

De cette façon, si votre référentiel est configuré pour une télécommande HTTP ou Git, git ignorera ce paramètre lors de la transmission et utilisera SSH à la place.

[url "[email protected]:"]
    pushInsteadOf = git://github.com/
    pushInsteadOf = https://github.com/

(Un insteadOf =réglage est également possible, pour annuler à la fois la traction et la poussée.)

user1686
la source