Wie stelle ich sicher, dass Git mich nicht nach meinem GitHub-Benutzernamen und -Kennwort fragt?

171

Ich arbeite mit einem Repo auf GitHub und jedes Mal, wenn ich versuche, etwas zu pushen, fragt es nach meinem GitHub-Benutzernamen und Passwort. Das will ich nicht.

Ich habe die Anleitung zum Einrichten Ihrer E-Mail in Git ausprobiert , nämlich das Einrichten der Git-Variablen github.user und github.token, aber das hat keinen Unterschied gemacht.

Ich verstehe nicht, warum das passiert.

picardo
quelle
Sie müssen das Passwort zwischenspeichern: help.github.com/articles/set-up-git#password-caching
Piotr Usewicz

Antworten:

33

Sie müssen einen SSH-Agenten einrichten, für den Sie sich nur einmal authentifizieren müssen. Siehe diese Antwort bei SO für eine Anleitung.

Benjamin Bannier
quelle
1
Aber diese Lösung ist für ssh-Familienphrasen. Das Problem ist, dass git "git push" verwendet, was, wie ich annehme, nicht den ssh-agent auslöst. (Ich habe dies bereits getan, damit ich weiß, dass es nicht funktioniert.)
Picardo
2
@ Picardo: Ich habe das getan, und es funktioniert in der Tat.
Daenyth
213

Hatte heute ein ähnliches Problem: Ich habe Dinge in meiner Arbeitskopie durcheinander gebracht, also habe ich beschlossen, das Verzeichnis umzubenennen und mein Projekt erneut von github zu klonen. Danach musste ich mein Passwort eingeben, um eine Pull- / Push-Anforderung auszuführen, anstatt die Passphrase nur einmal wie früher einzugeben.

Das lag daran, dass ich heute das https-Protokoll verwendet habe, um das Projekt zu klonen! Um zu überprüfen, welches Protokoll Sie verwenden, führen Sie es einfach aus

git config -l

und schauen Sie sich die Zeile an, die mit 'remote.origin.url' beginnt.

So wechseln Sie Protokolle:

git config remote.origin.url [email protected]:the_repository_username/your_project.git

the_repository_usernameund your_projectsollte durch den entsprechenden Repository-Namen und den Eigentümer dieses Repositorys ersetzt werden. Der Benutzername wird Ihnen gehören, wenn Sie das Repository besitzen, oder der Benutzername des Repository-Besitzers ansonsten.

Sergio Morstabilini
quelle
5
Es hat bei mir funktioniert. Eine Sache ist, dass die URL nicht meinen Benutzernamen enthält, sondern die Repo-Adresse, wie sie auf github erscheint:[email protected]:some-user/repo-name.git
B Seven
1
Hinweis: Google hat mich hierher gebracht. Ich hatte die remote.origin.urlEinstellung auf die https-Methode und habe nicht einmal bemerkt, dass es httpsvs- sshMethoden gibt. Diese URL hat mir geholfen, das Offensichtliche zu erkennen: help.github.com/articles/…
Chris K
Gibt es eine Möglichkeit, das Passwort auch einzugeben?
Zishe
Q für diejenigen mit Git-Kenntnissen: Gibt es einen Unterschied (oder eine Präferenz) zwischen git config remote.origin.url ...den oben genannten und den oben genannten git remote set-url origin ...?
Daryn
Ich konnte mir nicht vorstellen, wie ich so einen falschen Ursprung entfernen könnte. Die Antwort lautet:git remote rm origin
Vacilando
30

Wenn Sie HTTPS anstelle von SSH verwenden, können Sie folgendermaßen vorgehen:

  1. Finden Sie Ihre entfernte URL (remote.origin.url) mit

    git config -l
    

    danke an Sergio Morstabilini

  2. Ihre ferne URL lautet wie folgt: https: // {BENUTZERNAME} @ github.com / {BENUTZERNAME} / {REPONAME} .git

  3. Führen Sie diesen Befehl aus:

    git config remote.origin.url https://{USERNAME}:{PASSWORD}@github.com/{USERNAME}/{REPONAME}.git
    
Eray
quelle
2
Mein Benutzername selbst enthält @, hat bei mir nicht funktioniert.
Coding_idiot
Aber wenn dies nicht der Fall ist (Sie müssen Ihre E-Mail nicht verwenden), funktioniert es perfekt! Vielen Dank.
Killah
4
Wenn Ihr Benutzername ein @ enthält, müssen Sie es URL-codieren. meyerweb.com/eric/tools/dencoder
Tim Bodeit
1
Sie sollten Ihr Passwort aus Sicherheitsgründen weglassen.
Zygimantus
3
Achtung, das Passwort wird im Klartext in der .git/configDatei gespeichert!
Amro
26

Ich bevorzuge die Verwendung von HTTPS. Ich finde es einfacher und sicherer als die Einrichtung der SSH-Schlüssel.

Mit HTTPS können Sie verhindern, dass git Ihren Benutzernamen nach github-Fernbedienungen fragt.

git config --global url."https://[email protected]".insteadOf "https://github.com"

Und Sie können zumindest die Frequenz reduzieren, mit der Sie nach Ihrem Passwort gefragt werden:

git config --global credential.helper 'cache --timeout=28800'

Wobei 28800 8 Stunden sind. Ich benutze dieses Setup, um mein Passwort nur einmal einzugeben, wenn ich meinen Arbeitstag beginne.

Danach haben Sie diese Einträge in Ihrem ~/.gitconfig

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

[credential]
    helper = cache --timeout=28800

Quelle:

http://git-scm.com/docs/git-credential-cache

http://git-scm.com/docs/git-config

stefanmarisch
quelle
6

Wenn Sie einen SSH-Schlüssel für Github einrichten, müssen Sie, falls dies nicht Ihr Standardschlüssel ist, einen Abschnitt zu Ihrem hinzufügen ~/.ssh/config

Host *github.com
    User git
    IdentityFile ~/.ssh/github_id_rsa
Daenyth
quelle
6

Wenn Sie unter Windows HTTPS verwenden, probieren Sie den Git-Anmeldeinformationsspeicher aus. Er verwendet den Windows-Anmeldeinformationsspeicher, um Ihren Namen und Ihr Kennwort zu speichern.

Windows Credential Store for Git
This application is a small helper app designed to follow the 
git credentials API as defined by the Git Documentation.

Installation
1. Download the git-credential-winstore.exe application
2. Run it! If you have GIT in your PATH, it should just work.

Wenn Sie dann das nächste Mal Ihren Namen und Ihr Passwort eingeben, werden diese für Sie gespeichert.

Brian Burns
quelle
1
Danke. Das Projekt wurde in Git-Credential-Manager-for-Windows umbenannt .
Michael S.
5

Wenn Sie außerdem jedes Mal zur Eingabe Ihres Kennworts aufgefordert werden möchten, jedoch nicht zur Eingabe Ihres Benutzernamens, konfigurieren Sie die Fernbedienung als HTTPS mit einem Benutzernamen.

git config remote.origin.url https://[email protected]/repo_owner/repo_name

Danach werden Sie jedes Mal zur Eingabe Ihres Passworts aufgefordert, jedoch nicht Ihres Benutzernamens.

So bevorzuge ich es, da ich gerne gezwungen bin, mein Github-Passwort einzugeben, bevor ich es mit der Welt teile.

David Jeske
quelle
2

Die Dinge sind ein wenig anders, wenn Sie 2-Faktor-Authentifizierung verwenden, wie ich es bin. Da ich anderswo keine gute Antwort gefunden habe, werde ich eine hier einfügen, damit ich sie später vielleicht finde.

Wenn Sie die 2-Faktor-Authentifizierung verwenden, funktioniert die Angabe von Benutzername / Kennwort nicht. Ihnen wird der Zugriff verweigert. Sie können jedoch ein Anwendungszugriffstoken verwenden und das Hilfsprogramm für Anmeldeinformationen von git verwenden, um es für Sie zwischenzuspeichern. Hier sind die relevanten Links:

Und ich erinnere mich nicht, wo ich das gesehen habe, aber wenn Sie nach Ihrem Benutzernamen gefragt werden, kleben Sie dort das Zugriffstoken für die Anwendung ab. Dann lassen Sie das Passwort leer. Arbeitete auf meinem Mac.

John Berryman
quelle
2

benutze SSH

Um zu verhindern, dass GitHub beim Pushen nach dem Passwort fragt, sollten Sie im Idealfall SSH ( [email protected]:...) anstelle von HTTPS URL ( https://github.com/...) verwenden und Ihren SSH-Schlüssel zu Ihrem GitHub-Konto hinzufügen . Siehe: Welche entfernte URL soll ich verwenden?

GitHub - Mit SSH klonen

ein Ausweishelfer

Wenn Sie HTTPS wirklich benötigen, um Ihr GitHub-Kennwort in Git zwischenzuspeichern , sollten Sie einen Anmeldeinformationshelfer verwenden , um Git anzuweisen, sich bei jeder Kommunikation mit GitHub Ihren GitHub-Benutzernamen und Ihr Kennwort zu merken.

  • Mac: git config --global credential.helper osxkeychain( osxkeychain helperwird benötigt),
  • Windows: git config --global credential.helper wincred
  • Linux und andere: git config --global credential.helper cache

.netrc

Eine andere Methode ist die Konfiguration Ihres Benutzers / Passworts in ~/.netrc( _netrcunter Windows), z

machine github.com
login USERNAME
password PASSWORD

OAuth

Verwenden Sie das OAuth-Token ( Personal API-Token ), um die Änderungen zu übertragen, z

git push https://[email protected]/foo/bar

Verbunden:

Kenorb
quelle
1

Wenn Sie Windows verwenden, können Sie auch Folgendes verwenden:

$ git config --global credential.helper wincred

Sie müssen sich nur noch einmal anmelden und git wird sich daran erinnern.

William Earl Cheaqui
quelle
1

Nach dem Benutzernamen zu fragen ist für mich ärgerlich, aber nach einem Passwort zu fragen ist nett, da es sicherstellt, dass Sie wirklich mit Ihren Änderungen an die Öffentlichkeit gehen wollen ...

Also füge ich das einfach zu meiner ".gitconfig" hinzu

[url "https://[email protected]"]
    insteadOf = https://github.com
ViToni
quelle
0

Verwenden Sie Git Credential Manager für Windows , wenn Sie Windows verwenden.

Dieses Projekt beinhaltet :

  • Sichere Kennwortspeicherung im Windows-Anmeldeinformationsspeicher
  • Unterstützung der Multi-Faktor-Authentifizierung für Visual Studio Team Services
  • Unterstützung der Zwei-Faktor-Authentifizierung für GitHub
  • Unterstützung für die Erstellung und Verwendung persönlicher Zugriffstoken für Visual Studio Team Services und GitHub
  • Unterstützung des nicht interaktiven Modus für Visual Studio Team Services, die von Azure Directory unterstützt werden
  • Kerberos-Authentifizierung für Team Foundation Server
  • Optionale Einstellungen für die Build Agent-Optimierung

Laden Sie einfach die neueste Version herunter und installieren Sie sie.

Wie benutzt man

Das tust du nicht. Es funktioniert auf magische Weise, wenn Anmeldeinformationen benötigt werden.

Jalal
quelle