Ich möchte in GitExtension automatisch Push und Pull verwenden , ohne jedes Mal meinen Benutzer und mein Passwort in einer Eingabeaufforderung einzugeben .
Wie kann ich meine Anmeldeinformationen in Git speichern?
Ich möchte in GitExtension automatisch Push und Pull verwenden , ohne jedes Mal meinen Benutzer und mein Passwort in einer Eingabeaufforderung einzugeben .
Wie kann ich meine Anmeldeinformationen in Git speichern?
Antworten:
Lauf
git config --global credential.helper store
dann
git pull
Geben Sie einen Benutzernamen und ein Passwort ein, und diese Details werden später gespeichert. Die Anmeldeinformationen werden in einer Datei auf der Festplatte gespeichert, mit den Festplattenberechtigungen "Nur vom Benutzer lesbar / beschreibbar", aber immer noch im Klartext.
Wenn Sie das Passwort später ändern möchten
git pull
Wird fehlschlagen, da das Passwort falsch ist, entfernt git dann den beleidigenden Benutzer + Passwort aus der ~/.git-credentials
Datei, also führen Sie es jetzt erneut aus
git pull
um ein neues Passwort anzugeben, damit es wie früher funktioniert.
Mit können Sie die git config
Speicherung von Anmeldeinformationen in git aktivieren.
git config --global credential.helper store
Wenn Sie diesen Befehl ausführen, werden Sie beim ersten Abrufen oder Drücken aus dem Remote-Repository nach dem Benutzernamen und dem Kennwort gefragt.
Für eine konsequente Kommunikation mit dem Remote-Repository müssen Sie anschließend nicht den Benutzernamen und das Kennwort angeben.
Das Speicherformat ist eine .git-credentials
Datei, die im Klartext gespeichert ist.
Sie können auch andere Helfer für den git config credential.helper
Speichercache verwenden:
git config credential.helper cache <timeout>
Dies dauert optional timeout parameter
und bestimmt, wie lange die Anmeldeinformationen im Speicher bleiben. Bei Verwendung des Hilfsprogramms berühren die Anmeldeinformationen niemals die Festplatte und werden nach dem angegebenen Zeitlimit gelöscht. Der default
Wert ist900 seconds (15 minutes).
WARNUNG : Wenn Sie diese Methode verwenden, werden Ihre Git-Account-Passwörter im plaintext
Format gespeichert global .gitconfig file
, z. B. unter Linux/home/[username]/.gitconfig
Wenn dies für Sie unerwünscht ist, verwenden ssh key
Sie stattdessen ein für Ihre Konten.
git config credential.helper cache
die Passwörter werden nicht in einer Datei gespeichert, sondern nur im Speicher gespeichert. Siehe: git-scm.com/docs/git-credential-cache
Empfohlene und sichere Methode: SSH
Erstellen Sie einen SSH-Github-Schlüssel. Gehen Sie zu github.com -> Einstellungen -> SSH- und GPG-Schlüssel -> Neuer SSH-Schlüssel. Speichern Sie nun Ihren privaten Schlüssel auf Ihrem Computer.
Wenn der private Schlüssel dann als id_rsa im Verzeichnis ~ / .ssh / gespeichert wird , fügen wir ihn zur Authentifizierung als solchen hinzu:
ssh-add -K ~/.ssh/id_rsa
Eine sicherere Methode: Caching
Wir können git-credential-store verwenden, um unseren Benutzernamen und unser Passwort für einen bestimmten Zeitraum zwischenzuspeichern. Geben Sie einfach Folgendes in Ihre CLI ein (Terminal oder Eingabeaufforderung):
git config --global credential.helper cache
Sie können die Zeitüberschreitung (in Sekunden) auch wie folgt festlegen:
git config --global credential.helper 'cache --timeout=3600'
Eine noch weniger sichere Methode
Git-credential-store kann ebenfalls verwendet werden, speichert jedoch Kennwörter in einer einfachen Textdatei auf Ihrer Festplatte als solche:
git config credential.helper store
Veraltete Antwort - schnell und unsicher
Dies ist eine unsichere Methode zum Speichern Ihres Passworts im Klartext. Wenn jemand die Kontrolle über Ihren Computer erlangt, wird Ihr Passwort angezeigt!
Sie können Ihren Benutzernamen und Ihr Passwort folgendermaßen einstellen:
git config --global user.name "your username"
git config --global user.password "your password"
Geben Sie im Terminal Folgendes ein:
# Set git to use the credential memory cache
git config --global credential.helper cache
Standardmäßig speichert Git Ihr Passwort 15 Minuten lang im Cache.
Geben Sie Folgendes ein, um das Standardzeitlimit für den Kennwortcache zu ändern:
# Set the cache to timeout after 1 hour (setting is in seconds)
git config --global credential.helper 'cache --timeout=3600'
Aus der GitHub-Hilfe
cache
Teil durch store
. Der vollständige Befehl lautet also : git config --global credential.helper store
. Beachten Sie, dass dadurch Ihr Passwort in einer Open-Text-Datei gespeichert wird (sozusagen ohne Verschlüsselung).
--timeout
Parameter?
Sie können die ~/.gitconfig
Datei bearbeiten , um Ihre Anmeldeinformationen zu speichern
sudo nano ~/.gitconfig
Welches sollte schon haben
[user]
email = your@email.com
user = gitUSER
Sie sollten am Ende dieser Datei hinzufügen.
[credential]
helper = store
Der Grund, warum ich diese Option empfehle, ist, dass sie global ist und wenn Sie die Option irgendwann entfernen müssen, wissen Sie, wohin Sie gehen und sie ändern müssen.
Verwenden Sie diese Option nur in Ihrem persönlichen Computer.
Dann, wenn Sie ziehen | Klon | Geben Sie Ihr Git-Passwort ein. Im Allgemeinen wird das Passwort ~/.git-credentials
im Format gespeichert
https://GITUSER:GITPASSWORD@DOMAIN.XXX
WO DOMAIN.XXX GITHUB.COM SEIN KÖNNTE | BITBUCKET.ORG | ANDERE
Siehe Dokumente
Geben Sie einfach Ihre Anmeldeinformationen wie folgt in die URL ein:
https://Username
:Password
@github.com/myRepoDir/myRepo.git
Sie können es so speichern :
git remote add myrepo https://Userna...
... Beispiel, um es zu verwenden :
git push myrepo master
Nun , das ist Liste der URL - Aliase:
git remote -v
... und dass der Befehl, einen von ihnen zu löschen:
git remote rm myrepo
git@github.com:Username/myRepo.git
https
, nicht ssh
, sodass eine solche Lösung dort nützlich sein kann. Beachten Sie auch, dass Sie ein Oauth-Token verwenden können, das geringfügig sicherer ist als Ihr GitHub-Passwort.
Öffnen Sie für die globale Einstellung das Terminal (von einem beliebigen Ort aus) und führen Sie Folgendes aus:
git config --global user.name "your username"
git config --global user.password "your password"
Auf diese Weise verwendet jedes lokale Git-Repo, das Sie auf Ihrem Computer haben, diese Informationen.
Sie können jedes Repo individuell konfigurieren, indem Sie Folgendes tun:
Führen Sie Folgendes aus:
git config user.name "your username"
git config user.password "your password"
Dies betrifft nur diesen Ordner (da Ihre Konfiguration lokal ist).
--local
Tag hinzugefügt, aber wieder passiert nichts
Sie können git-credential-store verwenden, um Ihre Kennwörter unverschlüsselt auf der Festplatte zu speichern, die nur durch die Berechtigungen des Dateisystems geschützt ist.
Beispiel
$ git config credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>
[several days later]
$ git push http://example.com/repo.git
[your credentials are used automatically]
Sie können die in der Datei gespeicherten Anmeldeinformationen überprüfen ~/.git-credentials
Weitere Informationen finden Sie unter git-credential-store - Hilfsprogramm zum Speichern von Anmeldeinformationen auf der Festplatte
Sie sind sicherer, wenn Sie die SSH-Authentifizierung verwenden als die Authentifizierung mit Benutzername / Kennwort.
Wenn Sie einen Mac verwenden, ist die SSH-Clientauthentifizierung in den MacOS-Schlüsselbund integriert. Nachdem Sie einen SSH-Schlüssel erstellt haben, geben Sie Folgendes in Ihr Terminal ein:
ssh-add -K ~/.ssh/id_rsa
Dadurch wird der private SSH-Schlüssel zum MacOS-Schlüsselbund hinzugefügt. Der Git-Client verwendet ssh, wenn er eine Verbindung zum Remote-Server herstellt. Solange Sie Ihren öffentlichen SSH-Schlüssel beim Server registriert haben, ist alles in Ordnung.
SSH
Zugriff gewähren. Bei Verwendung der HTTP-Authentifizierung hätte nur jemand Zugriff, der die Anmeldeinformationen stiehlt GitHub/GitLab
. Auch Token sind so konzipiert, dass sie eine begrenzte Lebensdauer haben.
Nachdem ich Dutzende von SO-Posts, Blogs usw. durchgesehen hatte, habe ich jede Methode ausprobiert , und das habe ich mir ausgedacht. Es umfasst alles.
Dies sind alle Möglichkeiten und Tools, mit denen Sie git sicher authentifizieren können, um ein Repository ohne interaktive Kennwortabfrage zu klonen .
Willst du Just Works ™? Dies ist die magische Silberkugel.
Holen Sie sich Ihr Zugriffstoken (siehe Abschnitt im Cheatsheet, wenn Sie dazu die Github- oder Gitea-Anweisungen benötigen) und legen Sie es in einer Umgebungsvariablen fest (sowohl für lokale Entwickler als auch für die Bereitstellung):
MY_GIT_TOKEN=xxxxxxxxxxxxxxxx
Kopieren Sie für Github diese Zeilen und führen Sie sie wörtlich aus :
git config --global url."https://api:$MY_GIT_TOKEN@github.com/".insteadOf "https://github.com/"
git config --global url."https://ssh:$MY_GIT_TOKEN@github.com/".insteadOf "ssh://git@github.com/"
git config --global url."https://git:$MY_GIT_TOKEN@github.com/".insteadOf "git@github.com:"
Herzlichen Glückwunsch, jetzt werden alle automatisierten Tool-Klon-Git-Repositorys nicht mehr durch eine Kennwortabfrage behindert, egal ob Sie https oder einen der SSH-URL-Stile verwenden.
Verwenden Sie Github nicht?
Für andere Plattformen (Gitea, Github, Bitbucket) ändern Sie einfach die URL. Ändern Sie die Benutzernamen nicht (obwohl willkürlich, werden sie für unterschiedliche Konfigurationseinträge benötigt).
Kompatibilität
Dies funktioniert lokal unter MacOS, Linux, Windows (in Bash), Docker, CircleCI, Heroku, Akkeris usw.
Mehr Info
Siehe den Abschnitt ".gitconfig anstatt" des Cheatsheets.
Sicherheit
Siehe den Abschnitt "Sicherheit" des Cheatsheets.
git config --global credential."https://somegithost.com".username MyUserName
, was in Ihrem Cheatsheet steht, aber nirgendwo anders in diesem Antwort-Thread. Diese spezielle Lösung beantwortet nicht die Frage des OP, aber sie beantwortet meine, also danke!
In diesem Fall benötigen Sie einen git-Anmeldeinformations-Helfer, um git über die folgende Befehlszeile anzuweisen, sich Ihr GitHub-Passwort und Ihren Benutzernamen zu merken:
git config --global credential.helper wincred
Wenn Sie Repo mit SSH-Schlüssel verwenden, benötigen Sie zur Authentifizierung einen SSH-Schlüssel.
Keine der obigen Antworten hat bei mir funktioniert. Ich bekam jedes Mal Folgendes, wenn ich wollte fetch
oder pull
:
Enter passphrase for key '/Users/myusername/.ssh/id_rsa':
Für Macs
Ich konnte verhindern, dass ich meine Passphrase fragte, indem ich:
vi ~/.ssh/config
UseKeychain yes
:wq!
Für Windows
Ich konnte es mithilfe der Informationen in diesem Stapelaustausch zum Laufen bringen: https://unix.stackexchange.com/a/12201/348665
Abgesehen von der Bearbeitung der ~/.gitconfig
Datei können Sie Folgendes tun:
git config --local --edit
oder
git config --global --edit
git config --local user.name 'your username'
git config --local user.password 'your password'
oder
git config --global user.name 'your username'
git config --global user.password 'your password'
Ihr Benutzername und Ihr Passwort verwenden möglicherweise einige Zeichen, die Ihr Passwort beschädigen würden, wenn Sie doppelte Anführungszeichen verwenden.
--local
oder --global
bedeutet, dass Konfigurationsparameter für das Projekt oder für den Betriebssystembenutzer gespeichert werden.
benutz einfach
git config --global credential.helper store
Wenn Sie den Git-Pull ausführen , werden Sie nach Benutzername und Passwort gefragt. Von nun an werden Sie nicht mehr nach Benutzername und Passwort gefragt, in denen die Details gespeichert werden
.git-credentials
Hier werden Ihr Benutzername und Ihr Kennwort (Zugriffstoken) beim Ausführen gespeichert git config --global credential.helper store
. Dies wird von anderen Antworten vorgeschlagen. Geben Sie dann Ihren Benutzernamen und Ihr Kennwort oder Ihr Zugriffstoken ein:
https://${username_or_access_token}:${password_or_access_token}@github.com
Um den Benutzernamen und das Passwort (Zugriffstoken) zu speichern:
git config —-global credential.helper store
echo “https://${username}:${password_or_access_token}@github.com“ > ~/.git-credentials
Dies ist sehr nützlich für Github-Roboter, z. B. um automatisierte Chain-Builds im selben Docker-Repository zu lösen, indem Regeln für verschiedene Zweige festgelegt werden, und diese dann auszulösen, indem Sie in post_push
Hooker im Docker-Hub darauf drücken .
Ein Beispiel hierfür finden Sie hier im Stackoverflow.
Ein schneller Weg, um Git-Anmeldeinformationen zwischenzuspeichern:
git config credential.helper 'cache' --timeout=10800
schön und sicher
Zeitüberschreitung ist in Sekunden.
Nachdem ich den Thread vollständig gelesen und mit den meisten Antworten auf diese Frage experimentiert hatte, fand ich schließlich das Verfahren, das für mich funktioniert. Ich möchte es teilen, falls sich jemand mit einem komplexen Anwendungsfall befassen muss, aber trotzdem nicht den gesamten Thread und die Manpages gitcredentials , gitcredentials-store usw. durchgehen möchte , wie ich es getan habe.
Unten finden Sie die Prozedur Ich schlage vor , WENN Sie (wie ich) mit mehreren Repositorys zu tun haben , von mehreren Anbietern (Gitlab, GitHub, Bitbucket, etc.) verschiedene Benutzername / Passwort - Kombinationen. Wenn Sie stattdessen nur ein einziges Konto zu Arbeit mit hat, dann könnten Sie besser dran , die Verwendung git config --global credential.helper store
oder git config --global user.name "your username"
usw. Lösungen , die in früheren Antworten erklärten sehr gut gewesen sein.
Meine Lösung:
> git config --global --unset credentials.helper
> cd /path/to/my/repo
> git config --unset credential.helper
> git config credential.helper 'store --file ~/.git_repo_credentials'
Hinweis : Dieser Befehl erstellt eine neue Datei mit dem Namen ".git_repo_credentials" in Ihrem Home-Verzeichnis, in der Git Ihre Anmeldeinformationen speichert. Wenn Sie keinen Dateinamen angeben, verwendet Git die Standardeinstellung ".git_credentials". In diesem Fall reicht es aus, einfach den folgenden Befehl auszugeben:
> git config credential.helper store
git config credential.*.username my_user_name
Hinweis : Die Verwendung von "*" ist normalerweise in Ordnung, wenn Ihre Repositorys vom selben Anbieter stammen (z. B. GitLab). Wenn Ihre Repositorys stattdessen von verschiedenen Anbietern gehostet werden, empfehle ich, den Link zum Anbieter für jedes Repository explizit festzulegen, wie im folgenden Beispiel (für GitLab):
git config credential.https://gitlab.com.username my_user_name
Wenn Sie an dieser Stelle einen Befehl git pull
eingeben, für den Ihre Anmeldeinformationen erforderlich sind (z. B. ), werden Sie nach dem Kennwort gefragt, das "my_user_name" entspricht. Dies ist nur einmal erforderlich, da git die Anmeldeinformationen in ".git_repo_credentials" speichert und bei nachfolgenden Zugriffen automatisch dieselben Daten verwendet.
Aus dem Kommentar von rifrol unter Linux Ubuntu und aus dieser Antwort geht Folgendes in Ubuntu hervor:
sudo apt-get install libsecret-1-0 libsecret-1-dev
cd /usr/share/doc/git/contrib/credential/libsecret
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
Einige andere Distributionen stellen die Binärdatei bereit, sodass Sie sie nicht erstellen müssen.
In OS X wird es normalerweise mit einem Standardmodul von "osxkeychain" "erstellt", sodass Sie es kostenlos erhalten.
Überprüfen Sie die offizielle Git-Dokumentation:
Wenn Sie den SSH-Transport für die Verbindung zu Fernbedienungen verwenden, können Sie einen Schlüssel ohne Passphrase haben, mit dem Sie Daten sicher übertragen können, ohne Ihren Benutzernamen und Ihr Kennwort einzugeben. Dies ist jedoch mit den HTTP-Protokollen nicht möglich - jede Verbindung benötigt einen Benutzernamen und ein Passwort. Dies wird noch schwieriger für Systeme mit Zwei-Faktor-Authentifizierung, bei denen das für ein Kennwort verwendete Token zufällig generiert und nicht aussprechbar ist.
Glücklicherweise verfügt Git über ein Anmeldeinformationssystem, das dabei helfen kann. Git bietet einige Optionen in der Box:
Standardmäßig wird überhaupt nicht zwischengespeichert. Bei jeder Verbindung werden Sie zur Eingabe Ihres Benutzernamens und Passworts aufgefordert.
Der Cache-Modus speichert Anmeldeinformationen für einen bestimmten Zeitraum im Speicher. Keines der Passwörter wird jemals auf der Festplatte gespeichert und nach 15 Minuten aus dem Cache gelöscht.
Im Speichermodus werden die Anmeldeinformationen in einer Nur-Text-Datei auf der Festplatte gespeichert und verfallen nie. Dies bedeutet, dass Sie Ihre Anmeldeinformationen nie wieder eingeben müssen, bis Sie Ihr Kennwort für den Git-Host geändert haben. Der Nachteil dieses Ansatzes ist, dass Ihre Passwörter im Klartext in einer einfachen Datei in Ihrem Home-Verzeichnis gespeichert werden.
Wenn Sie einen Mac verwenden, verfügt Git über einen "osxkeychain" -Modus, in dem Anmeldeinformationen im sicheren Schlüsselbund zwischengespeichert werden, der an Ihr Systemkonto angehängt ist. Diese Methode speichert die Anmeldeinformationen auf der Festplatte und läuft nie ab. Sie werden jedoch mit demselben System verschlüsselt, auf dem HTTPS-Zertifikate und automatische Safari-Ausfüllungen gespeichert sind.
Wenn Sie Windows verwenden, können Sie einen Hilfsprogramm namens "Git Credential Manager für Windows" installieren. Dies ähnelt dem oben beschriebenen "osxkeychain" -Helfer, verwendet jedoch den Windows Credential Store, um vertrauliche Informationen zu steuern. Es kann unter https://github.com/Microsoft/Git-Credential-Manager-for-Windows gefunden werden .
Sie können eine dieser Methoden auswählen, indem Sie einen Git-Konfigurationswert festlegen:
$ git config --global credential.helper cache
$ git config --global credential.helper store