Geklonte GitHub-Repos fragen nach einem Passwort, während sie ursprünglich erstellt wurden

9

Ich habe gerade eine Reihe von Repositorys von meiner Festplatte verloren, also habe ich sie von GitHub geklont. Diese fragen jetzt jedes Mal nach Benutzername und Passwort, wenn ich etwas an GitHub drücke. Diejenigen, die nicht gelöscht wurden, tun das nicht.
Die einzige Lösung, die ich gelesen habe, um die Eingabeaufforderung für Benutzername / Passwort zu entfernen, ist das Generieren des SSH-Schlüssels. Die Sache ist, dass ich bereits einen Schlüssel habe, sonst könnte ich nicht ohne Eingabeaufforderungen in diesen Repos pushen, die ich nicht geklont habe.

Ich habe nach git configzwei meiner Repositorys gesucht , eines, das ich ohne Passwort pushen kann, und eines, das ich geklont habe. Der einzige Unterschied war branch.master.remoteund branch.master.mergeEinstellungen, die ich deaktiviert habe, machen git configdas gleiche. Aber die Eingabeaufforderung ist immer noch da.

Ich bin mir nicht mal sicher, ob das Generieren eines neuen SSH-Schlüssels funktioniert. Was sind meine Optionen?

usr
quelle
Weitere Informationen finden Sie unter help.github.com/ssh-issues . Was passiert, wenn Sie versuchen, SSH?

Antworten:

21

Meine Vermutung:

Ihre alten Repositorys verwendeten SSH-Fernbedienungen ( [email protected]:oder ssh://[email protected]/Präfixe), die die Authentifizierung mit öffentlichem Schlüssel verwendeten. (Tatsächlich fragt der Github SSH-Server niemals nach einem Passwort.)

Ihre neuen Repositorys verwenden HTTP-Fernbedienungen ( ), die nur die kennwortbasierte HTTP- Basisauthentifizierung unterstützen und Ihre SSH-Schlüssel nicht verwenden.https://username@github.com/

Ändern Sie Ihre Remote-URLs, um SSH erneut zu verwenden. Verwenden git remote set-urloder bearbeiten .git/configSie dazu. Ersetzen

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

nur mit

[email protected]: Benutzername /repo.git

Sie können sogar einen Eintrag in Ihrem haben ~/.gitconfig, der git anweist, Remote-URLs von HTTP oder Git nach SSH zu übersetzen.

Auf diese Weise ignoriert git diese Einstellung, wenn Ihr Repository für eine HTTP- oder Git-Fernbedienung konfiguriert ist, diese Einstellung beim Push und verwendet stattdessen SSH.

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

(Es insteadOf =ist auch eine Einstellung möglich, um sowohl das Ziehen als auch das Drücken außer Kraft zu setzen .)

user1686
quelle