Wann immer ich versuche, in mein Repo zu schieben, fragt git nach beiden username & password
.
Ich habe kein Problem, jedes Mal mein Passwort erneut einzugeben, aber das Problem liegt in der Eingabe des Benutzernamens. Ich verwende https
, um mein Repository zu klonen.
Wie kann ich git also so konfigurieren, dass username
nicht für jeden git Push
erforderlich ist.
Ich bin neu in Linux, aber IIRC in Windows git Push
fragt nur nach dem Passwort.
Bearbeiten (von @dk14, wie von Moderatoren und Kommentaren vorgeschlagen)}
WARNUNG: Wenn Sie credential.helper store
aus der Antwort verwenden, wird Ihr Passwort vollständig ungeöffnet ("as is") unter ~/.git-credentials
gespeichert. Bitte lesen Sie die folgenden Kommentare oder die Antworten aus dem Abschnitt "Verknüpft", insbesondere wenn Ihr Arbeitgeber keine Sicherheitstoleranz hat.
Begründung: Der in der Antwort beschriebene Ansatz könnte zu einer erheblichen Sicherheitsanfälligkeit führen, insbesondere für Unternehmen, die mit privaten Finanzdaten arbeiten. Kombiniert mit geringfügigen Sicherheitsproblemen (oft in solchen Bereichen) oder minimalem Social Engineering, können die meisten Berechtigungsnachweise im Netzwerk des Projekts entführt werden, da der Ort des "bloßen" Kennworts vorab bekannt ist. Dies umfasst möglicherweise Anmeldeinformationen, die einen teilweisen Zugriff auf die Produktionsumgebung ermöglichen, wodurch die Zugriffsrechte [des internen Angreifers] de facto erhöht werden und die Identität des Hackers in gewissem Umfang überdeckt werden kann.
Als Randbemerkung (um diese Warnung durch Beispiel zu erweitern) scheinen mehrere große Unternehmensprojekte dieses Problem zu haben, obwohl sichere virtuelle Umgebungen für die Mitarbeiter bereitgestellt werden ... Im Grunde wurde mein Aufruf, https
auth loszuwerden, aus diesem Grund abgelehnt. Zu der Zeit war ich jedoch nicht der Meinung, dass ein Exploit (wie cat ~/git.credentials | curl ...
) in auf Git gehostete Aux-bash/build-Skripts injiziert werden kann, um sie unter Benutzern zu verbreiten, möglicherweise sogar anonym (da einige automatisch synchronisiert werden) Seien Sie fair, dieser Hack würde normalerweise (zumindest) keinen direkten Zugriff auf kritische Systeme gewähren. Außer, wenn Git-credentials === corporate-email-credentials
.
Bearbeiten Sie # 2 (von @ dk14):
Obwohl akzeptiert, beantwortet es nicht die eigentliche Frage des OPs, nur einen Benutzernamen (kein Passwort) anzugeben. Für die Leser mit genau diesem Problem könnte @ grawitys answer nützlich sein.
Originalantwort (von @Alexander Zhu):
Sie können Ihre Anmeldeinformationen mit dem folgenden Befehl speichern
$ git config credential.helper store
$ git Push http://example.com/repo.git
Username: <type your username>
Password: <type your password>
Ich schlage auch vor zu lesen$ git help credentials
Sie können dies in der .git/config
-Datei Ihres lokalen Repositorys durchführen. Diese Datei enthält einen Abschnitt namens "remote" mit einem Eintrag namens "url". Der 'url'-Eintrag sollte den https-Link des Repositorys enthalten, über das Sie sprechen.
Wenn Sie der Host-URL Ihren Benutzernamen voranstellen, sollte git
nicht mehr nach Ihrem Benutzernamen fragen. Hier ist ein Beispiel:
url = https://[email protected]
Führen Sie den folgenden Befehl aus, um die Zwischenspeicherung von Anmeldeinformationen zu aktivieren:
$ git config credential.helper store
$ git Push https://github.com/repo.git
Username for 'https://github.com': <USERNAME>
Password for 'https://[email protected]': <PASSWORD>
Verwendung sollte auch angeben Zwischenspeicherung ablaufen
git config --global credential.helper "cache --timeout 7200"
Nach dem Aktivieren der Zwischenspeicherung der Berechtigungsnachweise wird sie für 7200 Sekunden (2 Stunden) zwischengespeichert.
Berechtigungsnachweise lesen Dokumente
$ git help credentials
Fügen Sie neue SSH-Schlüssel hinzu, wie in diesem Artikel auf GitHub beschrieben.
Wenn Sie von Git immer noch nach Benutzername und Kennwort gefragt werden, ändern Sie https://github.com/
in [email protected]:
in der Remote-URL:
$ git config remote.Origin.url
https://github.com/dir/repo.git
$ git config remote.Origin.url "[email protected]:dir/repo.git"
Wenn Sie https anstelle von ssh verwenden, können Sie "url" in .git/config
bearbeiten, wie es user701648 sagt, aber wenn Sie möchten, können Sie auch das Passwort hinzufügen:
url = https://username:[email protected]
Am einfachsten fand ich diesen Befehl:
git config --global credential.https://github.com.username <your_username>
Dies funktioniert auf Website-Basis und ändert Ihre globale Konfiguration.
Um die Änderungen anzuzeigen, verwenden Sie:
git config --global --edit
Sie können Ihren Benutzernamen für alle Repositorys an einer bestimmten Site festlegen, indem Sie etwa Folgendes in Ihre Git-Konfigurationsdatei einfügen. Sie möchten " https://example.com " und "ich" in die tatsächliche URL und Ihren tatsächlichen Benutzernamen ändern.
[credential "https://example.com"]
username = me
(Dies ist direkt von "git help credentials")
Stellen Sie sicher, dass Sie SSH anstelle von http verwenden. Überprüfen Sie diese SO - Antwort.
Zusätzlich zur Antwort von user701648 können Sie Ihre Anmeldeinformationen in Ihrem Basisordner (global für alle Projekte) anstelle des Projektordners mit dem folgenden Befehl speichern
$ git config --global credential.helper store
$ git Push http://example.com/repo.git
Username: <type your username>
Password: <type your password>
Wenn ich nur git pull , git pull Origin xxx , benutze, fragt git nach Benutzername und Passwort.
git config credential.helper store
es klappt.
Ändern der geklonten Repo-Werke:
git remote set-url Origin [email protected]:gitusername/projectname.git
Die Verwendung von zwischengespeicherten Anmeldeinformationen funktioniert und das Festlegen des Timeout-Zeitraums macht die Sache weniger nervig. Wenn Sie den Windows-Assistenten für Anmeldeinformationen verwenden, sollte dies die einfachste Methode sein (insbesondere wenn SSH blockiert ist).
Wenn Sie die Version [~ # ~] ssh [~ # ~] verwenden, haben Sie keine Probleme mit Passwörtern. Nur einmal generieren Sie [~ # ~] ssh [~ # ~] Taste, um git mitzuteilen, dass dies pc arbeitet mit diesem Github-Konto und fragt mich nie wieder nach einem Zugang (für diesen PC).
git config --global credential.helper cache
Am einfachsten erstellen Sie eine ~/.netrc
-Datei mit folgendem Inhalt:
machine github.com
login YOUR_GITHUB_USERNAME
password YOUR_GITHUB_PASSWORD
(wie hier gezeigt: https://Gist.github.com/ahoward/2885020 )
Sie können sogar die Berechtigungen für diese Datei schließen, sodass niemand Ihr Kennwort lesen kann, indem Sie Folgendes eingeben:
chmod 600 ~/.netrc
$ git config credential.helper store
$ git Push/push https://github.com/xxx.git
Geben Sie dann Ihren Benutzernamen und Ihr Passwort ein.
Um die Eingabe des Benutzernamens zu vermeiden, aber trotzdem aufgefordert werden, ein Kennwort einzugeben, können Sie einfach Ihr Repository mit dem Benutzernamen klonen:
git clone [email protected]/my_repo.git
holen Sie sich die URL Ihres Idioten, wenn Sie drinnen sind.
git config remote.Origin.url
dann :
git config credential.helper store
git Push "url of your git"
fragt einmalig nach Benutzername und Passwort
erledigt.