it-swarm.com.de

Git fragt bei jedem Druck nach dem Benutzernamen

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.

463
RanRag

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

768

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]
133
user701648

Dauerhafte Authentifizierung mit Git-Repositories

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
86
Jay Patel

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"
28

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]
25
Daniel Lerch

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
25
Ben

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")

19
Alan De Smet

Stellen Sie sicher, dass Sie SSH anstelle von http verwenden. Überprüfen Sie diese SO - Antwort.

10
gkris

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>
6
Yuvi

Wenn ich nur git pull , git pull Origin xxx , benutze, fragt git nach Benutzername und Passwort.

git config credential.helper store

es klappt.

5
Languoguang

Ä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).

5
Layer8Err

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).

So generieren Sie SSH für Github

5

git config --global credential.helper cache

2
Kai Wang

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
2
Simpler
  1. $ git config credential.helper store

  2. $ git Push/push https://github.com/xxx.git

  3. Geben Sie dann Ihren Benutzernamen und Ihr Passwort ein.

  4. Erledigt
1

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
0
ManoDestra

Schnelle Methode

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.

0
Aominé