795 Stimmen

Git fordert mich ständig zur Eingabe eines Passworts auf

Ich verwende Git jetzt schon eine Weile, aber die ständigen Anfragen nach einem Passwort machen mich langsam wahnsinnig.

Ich verwende Mac OS X und GitHub und habe Git und meine SSH-Schlüssel nach den Anweisungen von GitHub's Git-Seite einrichten .

Ich habe auch den SSH-Schlüssel von Github zu meinem Mac OS X-Schlüsselbund hinzugefügt, wie auf GitHub's SSH-Schlüssel-Passphrasen-Seite . Mein öffentlicher Schlüssel ist bei Git registriert.

Dennoch muss ich jedes Mal, wenn ich versuche, Git pull zu nutzen, meinen Benutzernamen und mein Passwort eingeben. Gibt es etwas anderes als einen SSH-Schlüssel, den ich dafür einrichten muss?

904voto

static_rtti Punkte 50003

Ich glaube, Sie haben die falsche Git-Repository-URL.

Abrir .git/config und suchen Sie den Abschnitt [remote "origin"]. Vergewissern Sie sich, dass Sie die SSH-Version verwenden:

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

Sie können die SSH-URL auf der Hauptseite Ihres Repositorys sehen, wenn Sie auf Klonen oder Herunterladen und wählen Sie ssh .

Und NICHT die https o git ein:

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

Sie können jetzt validieren mit nur den SSH-Schlüssel anstelle des Benutzernamens und des Passworts.

Wenn Git sich beschwert, dass 'origin' has already been added öffnen Sie die .config Datei und bearbeiten Sie die url = "..." Teil nach [remote origin] como url = ssh://github/username/repo.git


Das Gleiche gilt für andere Dienstleistungen. Stellen Sie sicher, dass die Adresse wie folgt aussieht: protocol://something@url

z.B. .git/config para Azure DevOps:

[remote "origin"]
    url = https://mystore@dev.azure.com/mystore/myproject/
    fetch = +refs/heads/*:refs/remotes/origin/*

627voto

orkoden Punkte 17328

Credential.helper konfigurieren

Unter OS X (jetzt macOS) führen Sie dies in Terminal :

git config --global credential.helper osxkeychain

Es ermöglicht Git, die Datei Keychain.app zu verwenden, um Benutzername und Passwort zu speichern und die Passphrase für Ihren privaten SSH-Schlüssel aus dem Schlüsselbund abzurufen.

Für Windows verwenden:

git config --global credential.helper wincred

Für die Verwendung unter Linux:

git config --global credential.helper cache // If you want to cache the credentials for some time (default 15 minutes)

OR

git config --global credential.helper store // if you want to store the credentials for ever (considered unsafe)

Hinweis: Bei der ersten Methode werden die Anmeldedaten im Speicher zwischengespeichert, während sie bei der zweiten Methode in ~/.git-credentials im reinen Textformat.

Siehe aquí für weitere Informationen über die Linux-Methode.
Siehe aquí für weitere Informationen über alle drei.

Fehlersuche

Wenn der Git Credential Helper korrekt konfiguriert ist, speichert macOS die Passphrase im Schlüsselbund. Manchmal wird die Verbindung zwischen SSH und den im Schlüsselbund gespeicherten Passphrasen brechen kann. Führen Sie aus. ssh-add -K o ssh-add ~/.ssh/id_rsa um den Schlüssel wieder zum Schlüsselbund hinzuzufügen.

macOS v10.12 (Sierra) Änderungen an ssh

Für macOS v10.12 (Sierra), ssh-add -K muss nach jedem Neustart ausgeführt werden. Um dies zu vermeiden, erstellen Sie ~/.ssh/config mit diesem Inhalt.

Host *
    AddKeysToAgent yes
    UseKeychain yes
    IdentityFile ~/.ssh/id_rsa

Von der ssh_config man Seite am 10.12.2:

UseKeychain

Gibt unter macOS an, ob das System nach Passphrasen im Schlüsselbund des Benutzers suchen soll, wenn versucht wird, einen bestimmten Schlüssel zu verwenden. Wenn die Passphrase vom Benutzer bereitgestellt wird, gibt diese Option auch an, ob die Passphrase im Schlüsselbund gespeichert werden soll, sobald sie als korrekt verifiziert wurde. Das Argument muss "ja" oder "nein" lauten. Die Vorgabe ist "nein".

Apple hat hinzugefügt Technischer Bericht 2449 das erklärt, was passiert ist.

Vor macOS Sierra, ssh würde ein Dialogfeld anzeigen, in dem Sie nach Ihrer Passphrase gefragt werden, und die Möglichkeit bieten, diese im Schlüsselbund zu speichern. Diese Benutzeroberfläche wurde vor einiger Zeit veraltet und wurde entfernt.

159voto

amcc Punkte 2529

Das ist mir passiert, als ich auf macOS v10.12 (Sierra) aktualisiert habe. Es sieht so aus, als ob der SSH-Agent beim Upgrade gelöscht wurde.

$ ssh-add -L
The agent has no identities.

Einfach laufen ssh-add meine bestehende Identität gefunden. Ich gab das Passwort ein und war wieder startklar.

75voto

Chase Roberts Punkte 8682

Wie andere bereits gesagt haben, können Sie einen Passwort-Cache-Helfer installieren. Ich wollte eigentlich nur den Link für andere Plattformen posten, nicht nur für Mac. Ich betreibe einen Linux-Server und dies war hilfreich: Zwischenspeichern des GitHub-Passworts in Git

Für Mac:

git credential-osxkeychain

Fenster:

git config --global credential.helper wincred

Linux:

git config --global credential.helper cache
git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)

74voto

Darrell Duane Punkte 3824

Verwenden Sie dies: Ersetzen Sie github.com durch den entsprechenden Hostnamen

git remote set-url origin git@github.com:user/repo.git

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X