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 config
zwei meiner Repositorys gesucht , eines, das ich ohne Passwort pushen kann, und eines, das ich geklont habe. Der einzige Unterschied war branch.master.remote
und branch.master.merge
Einstellungen, die ich deaktiviert habe, machen git config
das 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?
Antworten:
Meine Vermutung:
Ihre alten Repositorys verwendeten SSH-Fernbedienungen (
[email protected]:
oderssh://[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-url
oder bearbeiten.git/config
Sie dazu. Ersetzennur mit
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.
(Es
insteadOf =
ist auch eine Einstellung möglich, um sowohl das Ziehen als auch das Drücken außer Kraft zu setzen .)quelle