it-swarm.com.de

Git fragt mich ständig nach dem Passwort

Ich benutze Git schon länger, aber die ständigen Anfragen nach einem Passwort treiben mich an die Wand.

Ich verwende OSX und Github. Ich habe Git und meine SSH-Schlüssel gemäß den Anweisungen von GitHub Git Git einrichten eingerichtet. Ich habe auch den github SSH-Schlüssel zu meinem Mac OSX-Schlüsselbund hinzugefügt, wie auf GitHubs SSH-Schlüssel-Passphraseseite erwähnt. Mein öffentlicher Schlüssel ist bei Git registriert.

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

546
Catherine

Ich denke, Sie haben möglicherweise die falsche Repo-URL von git. 

Öffnen Sie .git/config und suchen Sie den Abschnitt [Remote "Origin"]. Stellen Sie sicher, dass Sie die Variable SSH verwenden:

ssh://[email protected]/username/repo.git

Sie können die ssh-URL auf der Hauptseite Ihres Repos sehen, wenn Sie auf clone or download klicken und ssh wählen.

Und NICHT die Variable https oder git:

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

Sie können jetzt mit nur den SSH Key anstelle von username und password validieren. 

[Edit:] Wenn Git den 'Origin' has already been added beschwert, öffnen Sie die .config-Datei und bearbeiten Sie den url = "..."-Teil nach [remote Origin] als url = ssh://github/username/repo.git.

700
static_rtti

Credential.helper konfigurieren

Führen Sie dies unter OS X (jetzt macOS) im Terminal aus

git config --global credential.helper osxkeychain

Es ermöglicht git, 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

Fehlerbehebung

Wenn der git Credential Helper korrekt konfiguriert ist, speichert macOS die Passphrase im Schlüsselbund. Manchmal kann die Verbindung zwischen ssh und den im Schlüsselbund gespeicherten Passphrasen unterbrochen werden. Führen Sie ssh-add -K oder ssh-add ~/.ssh/id_rsa aus, um den Schlüssel erneut zum Schlüsselbund hinzuzufügen.

macOS 10.12 Sierra wechselt zu ssh

Für macOS 10.12 Sierra muss ssh-add -K 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

Auf der Seite ssh_configman am 10.12.2:

UseKeychain

Gibt unter macOS an, ob das System nach Passwörtern 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, nachdem sie sich als korrekt erwiesen hat. Das Argument muss "Ja" oder "Nein" sein. Der Standardwert ist "Nein".

Apple hat Technote 2449 hinzugefügt, was erklärt, was passiert ist.

Vor macOS Sierra bot ssh ein Dialogfeld an, in dem Sie nach Ihrer Passphrase gefragt werden, und bietet die Option an, sie im Schlüsselbund zu speichern. Diese Benutzeroberfläche wurde vor einiger Zeit nicht mehr unterstützt und wurde entfernt.

507
orkoden

Dies ist mir passiert, als ich zu macOS Sierra aufgerüstet habe. Der ssh-Agent wurde beim Upgrade gelöscht.

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

Einfach mit ssh-add meine vorhandene Identität suchen, das Passwort eingeben und loslegen.

118
amcc

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

git remote set-url Origin [email protected]:user/repo.git
60
Darrell Duane

Wie andere schon gesagt haben, können Sie einen Passwort-Cache-Helper installieren. Ich wollte den Link meistens nur für andere Plattformen posten und nicht nur für Mac. Ich betreibe einen Linux-Server und das war hilfreich: https://help.github.com/articles/caching-your-github-password-in-git/#platform-linux

Für mac:

git credential-osxkeychain

Windows:

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)
36
Chase Roberts

Achten Sie auch darauf, wer Sie nach der Passphrase fragt. Ist es git oder dein SSH-Agent?

In meinem Fall fragte ich jedes Mal, wenn ich git pull tat:

Enter passphrase for key '/work/username/.ssh/id_rsa':

Also nahm ich an, dass es git war, nach einer Passphrase zu fragen. Also suchte ich ständig nach Lösungen, um später zu realisieren, dass mein SSH-Agent geschlossen wurde. Was mit eval $(ssh-agent) und ssh-add wie angegeben hier behoben werden kann.

Fügen Sie unten ein kleines Snippet ein, das Sie Ihrem ~/.bashrc (oder einem gleichwertigen Element) hinzufügen können, um sicherzustellen, dass Ihr ssh-agent bei Ihrer Anmeldung gestartet wird. 

Auf jeden Fall war das ein ziemlich dummer Fehler, den ich gemacht habe, aber hier zu veröffentlichen, nur für den Fall, dass jemand etwas Zeit sparen kann, um den falschen Baum aufzubellen, wie ich es tat.

# start the ssh-agent
function start_agent {
    echo "Initializing new SSH agent..."
    # spawn ssh-agent
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV}
    echo succeeded
    chmod 600 ${SSH_ENV}
    . ${SSH_ENV} > /dev/null
    /usr/bin/ssh-add
}

if [ -f "${SSH_ENV}" ]; then
     . ${SSH_ENV} > /dev/null
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi

17
mithunpaul
git config credential.helper store

Hinweis: Während dies praktisch ist, speichert Git Ihre Anmeldeinformationen in Klartext in einer lokalen Datei (.git-credentials) unter Ihrem Projektverzeichnis (siehe unten für das "Home" -Verzeichnis). Wenn Sie dies nicht mögen, löschen Sie diese Datei und wechseln Sie zur Verwendung der Cache-Option.

Wenn Sie möchten, dass Git Sie bei jeder Verbindung zum Remote-Repository erneut nach Anmeldeinformationen fragt, können Sie den folgenden Befehl ausführen:

git config --unset credential.helper

Um die Kennwörter in .git-credentials im Verzeichnis% HOME% und nicht im Projektverzeichnis zu speichern, verwenden Sie das Flag --global

git config --global credential.helper store
10
Lokesh S

Anleitung für git unter Windows und Github mit SSH zum Push/Pull http://nathanj.github.io/gitguide/tour.html

  1. Laden Sie PuTTY herunter und installieren Sie es
  2. Setzen Sie die Umgebungsvariable 'GIT_SSH' = 'Pfad\to\plink.exe' (im installierten Ordner PuTTY) - SEHR WICHTIG !!!
  3. RESTART WINDOWS Explorer, damit die Env-Variablen wirksam werden (kann nicht nur die Eingabeaufforderung erneut starten)
  4. Führen Sie puttygen.exe aus, um einen neuen Schlüssel zu generieren, und kopieren Sie den PUBLIC-Schlüssel in die Github-Site
  5. Speichern Sie diesen neuen PRIVATE-Schlüssel an einem sicheren Ort auf der Festplatte (vorzugsweise keine Dropbox).
  6. Führen Sie PuTTY.exe aus und verbinden Sie SSH mit github.co
  7. Rufen Sie den Startordner schnell auf, indem Sie "Shell: startup" ..__ ausführen. 8 Starten Sie Ihren privaten Schlüssel mit Windows über pageant. Erstellen Sie im Autostart-Ordner eine Verknüpfung mit der Syntax "Pfad\to\pageant.exe" "Pfad\to\privatekey"
  8. Die Einstellung 'puttykeyfile' in .git/config unserer Repos muss nicht festgelegt werden
  9. SEHR WICHTIG ist, dass die "SSH-Klon-URL" von Github verwendet wird und nicht Https
9
Francois

Führen Sie in Windows für git 1.7.9+ den folgenden Befehl in der Eingabeaufforderung aus, um die Konfigurationsdatei im Texteditor zu öffnen:

    git config --global --edit

Fügen Sie dann in der Datei den folgenden Block hinzu, falls nicht vorhanden, oder bearbeiten Sie ihn entsprechend

    [credential "https://giturl.com"]
        username = <user id>
        helper = wincred

Speichern und schließen Sie die Datei . Sie müssen die krendentiellen Daten nur einmal nach der obigen Änderung angeben.

8
Rohan

Verwenden Sie den folgenden Befehl, um die Zeitüberschreitung zu erhöhen, damit Sie das Kennwort eine Zeit lang erneut eingeben können

git config --global credential.helper 'cache --timeout 3600'

Ich habe es für Bitbucket und Github verwendet, es funktioniert für beide. Das einzige, was Sie tun müssen, ist 3600 ist in Sekunden. Erhöhen Sie es in beliebigem Umfang. Ich änderte es in 259200. Dies ist ungefähr 30 Tage. Auf diese Weise gebe ich mein Passwort alle 30 Tage erneut ein.

6
Ravi Kumar

Ich denke, Sie haben Ihr Problem behoben, aber ich sehe nicht die Lösung, die mir dabei geholfen hat, also hier.

Geben Sie das Terminal ein:

echo "" > ~/.ssh/known_hosts

Dadurch wird Ihre known_hosts-Datei geleert, und Sie müssen jeden Host hinzufügen, mit dem Sie sich verbunden haben und mit dem Sie verbunden sind.

4
papan

Wie static_rtti oben gesagt hat, ändern Sie 

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

zu 

ssh://[email protected]/username/repo.git

Ich selbst habe das https in der .git/config -Datei in ssh geändert, aber es funktionierte immer noch nicht. Dann habe ich gesehen, dass Sie den github.com in [email protected] ändern MÜSSEN. Um die tatsächliche URL zu ermitteln, rufen Sie Ihre Projektseite auf und klicken Sie auf diese 

HTTPS in SSH ändern, um die richtige URL zu erhalten

Fügen Sie dann diese URL zur Konfigurationsdatei hinzu. 

3
CheesusCrust

die Antwort von orkoden zur Verwendung des Schlüsselbunds mit Git in Ihrem Terminal war unvollständig und führt zu Fehlern. So speichern Sie den Benutzernamen und das Kennwort, die Sie im Terminal Ihres Schlüsselbundes eingeben:

curl http://github-media-downloads.s3.amazonaws.com/osx/git-credential-osxkeychain -o git-credential-osxkeychain
Sudo mv git-credential-osxkeychain /usr/local/bin
Sudo chmod u+x /usr/local/bin/git-credential-osxkeychain

Dann geben Sie ein

git config --global credential.helper osxkeychain

Wenn Sie das Teil bereits mit git config vor dem Curl-Kram gemacht haben, ist das kein Problem, es wird funktionieren

3
Lukas

Ich stimme mit "Codehugger" überein und mit der Anweisung von "Orkoden" funktionierte es für mich - auf Netbeans 7.3 - wenn Sie mit der rechten Maustaste auf die Datei klicken und Kontextmenü auswählen - Drücken Sie - ein "Push to Remote" -Fenster wird geöffnet Optionen hier 

  1. Origin:https://github.com/myaccount/myproject.git/

  2. https://github.com/myaccount/myproject.git/

Wie Sie sehen, ist der Unterschied der Origin-Parameter in der URL. Sie möchten diese Option (1) nicht auswählen, die Sie mit der Option (2) markieren möchten. Das funktioniert für mich gut. Ich hoffe das hilft jemandem.

Dung Le.

2
Dung

Schritt 1: Überprüfen Sie Ihre aktuelle Konfiguration

cat .git/config

Sie erhalten: 

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "Origin"]
    url = https://github.com/path_to_your_git.git
    fetch = +refs/heads/*:refs/remotes/Origin/*
[user]
    name = your_username
    email = your_email
[branch "master-staging"]
    remote = Origin
    merge = refs/heads/master-staging

Schritt 2: Entfernen Sie Ihr Remote-Origin

git remote rm Origin

Schritt 3: Fügen Sie Remote-Origin mit Ihrem Benutzernamen und Kennwort hinzu

git remote add Origin https://your_git_username:[email protected]/path_to_your_git.git
2
Haimei

Bevor Sie Ihren Schlüssel mit github verwenden können, folgen Sie diesem Schritt in der Anleitung Testen Ihrer SSH-Verbindung :

$ ssh -T [email protected]
# Attempts to ssh to GitHub
1
Jonny

Wenn Sie Windows verwenden und dies plötzlich aus heiterem Himmel auf GitHub passiert, liegt dies wahrscheinlich daran, dass Github kürzlich die Unterstützung für veraltete kryptographische Algorithmen deaktiviert hat am 2018-02-22. In diesem Fall ist die Lösung einfach Laden Sie die neueste Version von Git für Windows oder einfach nur den Git Credential Manager für Windows herunter und installieren Sie sie.

1
stovroz

Wenn Git Sie bei jedem Versuch, mit GitHub zu interagieren, zur Eingabe eines Benutzernamens und Kennworts auffordert, verwenden Sie wahrscheinlich die HTTPS-Klon-URL für Ihr Repository.

Die Verwendung einer HTTPS-Remote-URL hat einige Vorteile: Sie ist einfacher einzurichten als SSH und arbeitet normalerweise mit strengen Firewalls und Proxys. Sie werden jedoch auch dazu aufgefordert, Ihre GitHub-Anmeldeinformationen jedes Mal einzugeben, wenn Sie ein Repository abrufen oder ein Push-Objekt verwenden.

Sie können Git so konfigurieren, dass Ihr Passwort für Sie gespeichert wird. Für Windows :

git config --global credential.helper wincred
1

Abhängig von Ihrer Konfiguration gibt es unterschiedliche Authentifizierungsarten. Hier sind einige:

  1. git credential-osxkeychain.

    Wenn Ihre Berechtigung ungültig ist, entfernen Sie sie wie folgt:

    git credential-osxkeychain erase
    

    oder:

    printf "protocol=https\nhost=github.com\n" | git credential-osxkeychain erase
    

    Daher wird Sie von git nicht erneut nach der Berechtigung für den Schlüsselbund gefragt. Dann konfigurieren Sie es erneut.

    Siehe: Anmeldeinformationen vom OSX-Schlüsselbund aktualisieren bei GitHub

  2. Ihr SSH-RSA-Schlüssel.

    Dazu müssen Sie Ihren SSH-Schlüssel mit dem von Ihnen hinzugefügten vergleichen. Überprüfen Sie mit ssh-add -L/ssh-add -l, ob Sie die richtige Identität verwenden.

  3. Ihre HTTPS-Authentifizierung (wenn Sie https anstelle des ssh-Protokolls verwenden).

    Verwenden Sie ~/.netrc (%HOME%/_netrc unter Windows), um Ihre Anmeldeinformationen anzugeben, z.

    machine stash1.mycompany.com
    login myusername 
    password mypassword
    

    Erfahren Sie mehr: Synchronisieren mit GitHub at SO

1
kenorb

ein Tippfehler in der URL führt dazu, dass git Sie nach Benutzername und Kennwort fragt, dummes git

getestet unter Linux Kali, Git Version 2.7.0

versuchen:

git clone https://github.com/thisrepodoesntexists/doesntexists.git

1

Ich finde, die Antwort von static_rtti ist in gewissem Sinne hackig. Ich weiß nicht, ob dies früher verfügbar war, aber Git-Tools bieten jetzt Speicher für Anmeldeinformationen.

Cache-Modus

$ git config --global credential.helper cache

Verwenden Sie den Cache-Modus, um die Anmeldeinformationen für einen bestimmten Zeitraum im Speicher zu halten. Keines der Passwörter wird jemals auf der Festplatte gespeichert und nach 15 Minuten aus dem Cache gelöscht.

Speichermodus

$ git config --global credential.helper 'store --file ~/.my-credentials'

Verwenden Sie den "Store" -Modus, um die Anmeldeinformationen in einer Nur-Text-Datei auf der Festplatte zu speichern, und sie verfallen niemals. 

Ich habe persönlich den store-Modus verwendet. Mein Repo gelöscht, geklont und dann einmal meine Zugangsdaten eingeben. 

Referenz: https://git-scm.com/book/de/v2/Git-Toolss-Credential-Storage

0
Ducktales