Frage Git Push erfordert Benutzername und Passwort


Ich habe ein Git-Repository von meinem Github-Account auf meinen PC geklont.

Ich möchte mit meinem PC und Laptop arbeiten, aber mit einem Github-Account.

Wenn ich versuche, mit meinem PC zu Github zu wechseln oder von ihm zu pushen, werden Benutzername und Passwort benötigt, jedoch nicht bei Verwendung des Laptops!

Ich möchte meinen Benutzernamen und mein Passwort nicht jedes Mal eingeben, wenn ich mit der Herkunft interagiere. Was ich hier vermisse?


1069
2017-07-03 20:25


Ursprung


Antworten:


Ein häufiger Fehler ist das Klonen mit dem Standard (HTTPS) anstelle von SSH. Sie können dies korrigieren, indem Sie zu Ihrem Repository gehen, auf "Klonen oder Herunterladen" klicken, dann auf die Schaltfläche "Use SSH" oberhalb des URL-Felds klicken und die URL Ihrer Ursprungs-Fernbedienung wie folgt aktualisieren:

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

Dies ist bei GitHub dokumentiert: Wechseln von Remote-URLs von HTTPS zu SSH.


1579
2017-07-03 21:25



Dauerhafte Authentifizierung mit Git-Repositories,

Führen Sie folgenden Befehl zum Aktivieren aus Zwischenspeichern von Anmeldeinformationen:

$ git config credential.helper store
$ git push https://github.com/repo.git

Username for 'https://github.com': <USERNAME>
Password for 'https://USERNAME@github.com': <PASSWORD>

Verwendung sollte auch angeben Caching ablaufen,

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

Nach dem Aktivieren der Zwischenspeicherung von Anmeldeinformationen wird zwischengespeichert 7200 Sekunden (2 Stunden).


172
2018-02-17 13:30



Ich habe gerade das gleiche Problem gefunden, und die einfachste Lösung, die ich gefunden habe, war SSH URL anstelle von HTTPS zu verwenden:

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

Und nicht das:

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

Sie können jetzt mit validieren gerade das SSH Key anstatt der username und password.


109
2018-06-14 07:19



Abgesehen von der Umstellung auf SSH können Sie auch weiterhin HTTPS verwenden, wenn es Ihnen nichts ausmacht, Ihr Passwort in Klartext zu speichern. Setzen Sie das in Ihre ~/.netrc und es wird nicht nach Ihrem Benutzernamen / Passwort gefragt (zumindest auf Linux und Mac):

machine github.com
       login <user>
       password <password>

Zusatz (siehe ZwCs 2. Kommentar): Unter Windows ist der Dateiname %HOME%\_netrc.

Lesen Sie auch den ersten Kommentar von VonC, falls Sie verschlüsseln wollen.

Eine weitere Ergänzung (siehe Kommentar des Benutzers137717), die Sie verwenden können, wenn Sie haben Git 1.7.10 oder neuer.

Speichern Sie Ihr github-Passwort in git mit einem Berechtigungshelfer :

Wenn Sie GitHub-Repositorys mit HTTPS klonen, können Sie a   Credential Helfer, um Git zu sagen, sich an deinen GitHub Benutzernamen zu erinnern und   Passwort jedes Mal, wenn es mit GitHub spricht.

Dies funktioniert auch unter Linux, Mac und Windows.


105
2018-01-19 19:08



Für Uneingeweihte, die durch die vorherigen Antworten verwirrt sind, können Sie Folgendes tun:

git remote -v

was wird etwas wie antworten

origin  https://yourname@github.com/yourname/yourrepo.git (fetch)
origin  https://yourname@github.com/yourname/yourrepo.git (push)

Dann kannst du den Befehl ausführen, den viele andere vorgeschlagen haben, aber jetzt kennst du deinen Namen und deinen Ruf von oben, also kannst du einfach ausschneiden und einfügen yourname/yourrepo.git von oben in

git remote set-url origin git@github.com:yourname/yourrepo.git

69
2018-02-13 17:22



Wenn Sie ssh verwenden und Ihr privater Schlüssel mit einer Passphrase verschlüsselt ist, dann Sie werden dennoch aufgefordert, das Passwort / Passwort für den privaten Schlüssel einzugeben, wenn Sie mit Git Netzwerkvorgänge durchführen mögen push, pull, und fetch.

Verwenden Sie ssh-agent, um die Passphrase / Passwort-Anmeldeinformationen des privaten Schlüssels zu speichern

Wenn Sie vermeiden möchten, dass Sie jedes Mal Ihre Passphrase eingeben müssen, können Sie sie verwenden ssh-agent Englisch: https: / / entry.credit-suisse.ch/csfs...en/index.jsp Speichern Sie Ihre privaten Schlüssel - Passphrasen - Zugangsdaten einmal pro Terminal - Sitzung, wie ich in Deutsch: meine Antwort zu Es konnte keine Verbindung zu Ihrem Authentifizierungs-Agent hergestellt werden:

$ eval `ssh-agent -s`
$ ssh-add

In einem Windows Mysysgit Bash müssen Sie die Ausgabe von bewerten ssh-agentAber ich bin mir nicht sicher, ob Sie das auch in anderen Entwicklungsumgebungen und Betriebssystemen tun müssen.

ssh-add Sucht in Ihrem Zuhause nach einem privaten Schlüssel .ssh Ordner aufgerufen id_rsaDies ist der Standardname, aber Sie können einen Dateipfad an einen Schlüssel mit einem anderen Namen übergeben.

Den Agenten töten

Wenn Sie Ihre Terminalsitzung beendet haben, können Sie herunterfahren ssh-agent mit der Tötungsflagge -k:

$ ssh-agent -k

Wie in der ssh-agent Handbuch:

-k

Töte den aktuellen Agenten (gegeben durch die Umgebungsvariable SSH_AGENT_PID).

Optionales Zeitlimit

Es kann auch einen optionalen Timeout-Parameter wie folgt annehmen:

$ ssh-add -t <timeout>

woher <timeout> ist das Format <n>h zum <n> Std, <n>m zum <n> Minuten und so weiter.

Entsprechend der ssh-agent Handbuch:

-t life

Legen Sie einen Standardwert für die maximale Lebensdauer der hinzugefügten Identitäten fest   zu dem Agenten. Die Lebensdauer kann in Sekunden oder in a angegeben werden   Zeitformat in angegeben sshd_config (5). Eine Lebenszeit angegeben   für eine Identität mit ssh-hinzufügen (1) überschreibt diesen Wert. Ohne   Bei dieser Option ist die standardmäßige maximale Lebensdauer für immer.

Auf dieser Seite finden Sie weitere Zeitformate.

Sicherheitswarnung für Cygwin-Benutzer

Cygwin-Nutzer sollten sich bewusst sein, dass potenzielles Sicherheitsrisiko bei der Verwendung von ssh-agent in Cygwin:

Menschen sollten sich der Tatsache bewusst sein   mögliche Gefahren von ssh-agent unter cygwin [1], jedoch unter einem lokalen   netstat und remote portscan es scheint nicht, dass der Port in angegeben ist   / tmp / ssh-foo ist für jeden zugänglich ...?

[1]: http://www.cygwin.com/ml/cygwin/2001-01/msg00063.html

Und bei der zitierter Link:

Beachten Sie jedoch, dass Cygwins Unix-Domain-Sockets sind GRUNDLEGEND   UNSICHER  und so bin ich stark ENTMUTIGEN Verwendung von ssh-agent unter   Cygwin.

Wenn Sie ssh-agent unter cygwin ausführen, wird AF_UNIX Socket in erstellt    /tmp/ssh-$USERNAME/  Verzeichnis. unter cygwin AF_UNIX Sockets sind   emuliert über AF_INET-Sockets. Das kannst du leicht sehen, wenn du schaust   in /tmp/ssh-$USERNAME/agent-socket-*  Datei über Notizblock. du wirst sehen   das etwas wie

!<socket >2080

dann renne netstat -a und Überraschung! Sie haben ein Programm zu hören   Port 2080. Es ist ssh-Agent. wenn ssh RSA-Herausforderung von empfängt   Server, bezieht sich auf entsprechende /tmp/ssh-$USERNAME/agent-socket-*   (unter Cygwin, in unserem Fall bedeutet das, dass es eine Verbindung zu    localhost:2080) und fordert ssh-agent auf, die RSA-Challenge mit zu bearbeiten   privaten Schlüssel hat es, und dann gibt es einfach Antwort von erhalten   ssh-agent zum Server.

Unter Unix funktioniert ein solches Szenario ohne Probleme, weil Unix-Kernel   überprüft Berechtigungen, wenn das Programm versucht, auf den AF_UNIX-Socket zuzugreifen. Zum   AF_INET Sockets sind jedoch Verbindungen anonym (lesen   "unsicher"). Stellen Sie sich vor, dass Sie cygwin ssh-agent ausgeführt haben.   böswilliger Hacker kann Ihre Box portscan, finden Sie offene Port von verwendet   ssh-agent, offene Verbindung zu Ihrem SSH-Server, erhalten RSA-Herausforderung   Senden Sie es an Ihren ssh-agent über den offenen Port, den er gefunden hat, und empfangen Sie RSA   Antwort, sende es an ssh Server und voila, er hat sich erfolgreich eingeloggt   zu deinem Server wie du.


48
2017-08-21 02:54



Quelle: Richten Sie Git ein

Der folgende Befehl speichert Ihr Passwort für einige Zeit im Speicher.
  (Zum Git 1.7.10 oder neuer.)

$ git config --global credential.helper cache
# Set git to use the credential memory cache

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

41
2017-09-01 02:55



Wenn Sie verwenden https für git pull & push, nur config remote.origin.url für Ihr Projekt, um Eingabe-Benutzername (oder / und Passwort) zu vermeiden, jedes Mal wenn Sie drücken.

Wie zu konfigurieren remote.origin.url:

URL-Format:
    https: // {Benutzername: Passwort @} github.com/ {Besitzer} / {Repo}

Parameter in der URL:
* Nutzername
    optional, der Benutzername, der bei der Authentifizierung benötigt wird,
    Falls angegeben, muss der Benutzername nicht erneut eingegeben werden, wenn eine Authentifizierung erforderlich ist.
    verwende keine E-Mail, benutze deinen Benutzernamen, der kein "@" hat, sonst kann die URL nicht korrekt geparst werden,
* Passwort
    optional, das Passwort für die Authentifizierung bei Bedarf,
    Falls angegeben, müssen Sie das Kennwort nicht erneut eingeben, wenn eine Authentifizierung erforderlich ist.
    Spitze:
        Dieser Wert wird als reiner Text gespeichert. Aus Sicherheitsgründen sollten Sie diesen Parameter nicht angeben.
*

z.B
    Git-Konfiguration remote.origin.url https: //eric@github.com/eric/myproject


@Update - Verwenden ssh

Ich denke mit ssh Protokoll ist eine bessere Lösung als https, obwohl der Setup-Schritt ein wenig komplexer ist.

Grobe Schritte:

  • Erstellen Sie SSH-Schlüssel mithilfe eines Befehls, z ssh-keygen auf Linux, auf Windows msysgit Stellen Sie ähnliche Befehle zur Verfügung.
  • Halten Sie den privaten Schlüssel am lokalen Computer an der richtigen Stelle, z ~/.ssh. Und fügen Sie es über ssh Agent zu ssh-add Befehl.
  • Laden Sie den öffentlichen Schlüssel auf den Git-Server hoch.
  • Veränderung remote.origin.url von Git-Repository zu ssh Stil, z.B. git@gitlab.com:myaccount/myrepo.git
  • Dann, wenn Sie pull oder push, müssen Sie nie Benutzername oder Passwort eingeben.

Tipps:

  • Wenn Ihr SSH-Schlüssel über eine Passphrase verfügt, müssen Sie diese nach jedem Neustart des Computers standardmäßig bei der ersten Verwendung des Schlüssels eingeben.

@Update - Wechseln zwischen https und ssh Protokoll.

Einfach ändern remote.origin.url wird ausreichen, oder Sie können bearbeiten repo_home/.git/config direkt, um den Wert zu ändern (z. B. mit vi auf Linux).

Normalerweise füge ich für jedes Protokoll eine Zeile hinzu und setze eine davon mit einem Kommentar aus #.

z.B

[remote "Herkunft"]
        url = git@gitlab.com: myaccount / myrepo.git
        # url = https: //myaccount@gitlab.com/myaccount/myrepo.git
        fetch = + refs / heads / *: refs / Fernbedienungen / Herkunft / *

28
2017-12-25 15:42



Sie können Ihr GitHub Passwort in Git zwischenspeichern:

Befolge einfach die Anweisungen von den Githubs offizielle Dokumentation.

Nachdem Sie den Anweisungen des obigen Links gefolgt sind, sollten Sie in der Lage sein, Push / Pull zu Ihrem Repo zu bringen, ohne jedes Mal Ihren Benutzernamen / Ihr Passwort einzugeben.


15
2017-12-19 05:29



Was für mich funktionierte, war zu bearbeiten .git/config und benutzen

[remote "origin"]
        url = https://<login>:<password>@gitlab.com(...).git

Es versteht sich von selbst, dass dies eine unsichere Möglichkeit ist, Ihr Passwort zu speichern, aber es gibt Umgebungen / Fälle, in denen dies kein Problem darstellt.


5
2017-07-31 18:25