Hoe bewaar ik gebruikersnaam en wachtwoord in Git?

Ik wil automatisch pushen en pullen in GitExtension, SourceTreeof een andere Git-GUI zonder telkens mijn gebruiker en wachtwoord in een prompt in te voeren.

Dus hoe kan ik mijn inloggegevens opslaan in git?


Antwoord 1, autoriteit 100%

Attentie: deze methode slaat de inloggegevens op in platte tekstop de schijf van uw pc. Iedereen op uw computer heeft er toegang toe, b.v. kwaadaardige NPM-modules.

Rennen

git config --global credential.helper store

dan

git pull

geef een gebruikersnaam en wachtwoord op en deze gegevens worden later onthouden. De inloggegevens worden opgeslagen in een bestand op de schijf, met de schijfrechten van “alleen door de gebruiker leesbaar/schrijfbaar” maar nog steeds in platte tekst.

Als u het wachtwoord later wilt wijzigen

git pull

Zal mislukken, omdat het wachtwoord onjuist is, git verwijdert dan de overtredende gebruiker+wachtwoord uit het bestand ~/.git-credentials, dus voer het nu opnieuw uit

git pull

om een nieuw wachtwoord op te geven zodat het werkt zoals eerder.


Antwoord 2, autoriteit 15%

Je kunt de git configgebruiken om inloggegevens in git in te schakelen.

git config --global credential.helper store

Als u deze opdracht uitvoert, wordt u de eerste keer dat u uit de externe repository trekt of pusht, gevraagd naar de gebruikersnaam en het wachtwoord.

Daarna hoeft u voor consequente communicatie met de externe repository de gebruikersnaam en het wachtwoord niet op te geven.

Het opslagformaat is een .git-credentialsbestand, opgeslagen in platte tekst.

Je kunt ook andere helpers gebruiken voor de git config credential.helper, namelijk geheugencache:

git config credential.helper 'cache --timeout=<timeout>'

waarvoor een optionele timeout parameternodig is,
bepalen hoe lang de inloggegevens in het geheugen worden bewaard. Met behulp van de helper zullen de inloggegevens de schijf nooit raken en worden ze gewist na de opgegeven time-out. De defaultwaarde is 900 seconds (15 minutes).


WAARSCHUWING: als je deze methode gebruikt, worden de wachtwoorden van je git-account opgeslagen in de indeling plaintext, in het global .gitconfig file, bijv. in linux is het /home/[username]/.gitconfig

Als dit ongewenst voor je is, gebruik dan in plaats daarvan een ssh keyvoor je accounts.


Antwoord 3, autoriteit 10%

Aanbevolen en veilige methode: SSH

Maak een ssh Github-sleutel. Ga naar github.com-> Instellingen -> SSH- en GPG-sleutels -> Nieuwe SSH-sleutel. Sla nu uw privésleutel op uw computer op.

Als de privésleutel wordt opgeslagen als id_rsain de map ~/.ssh/, voegen we deze als zodanig toe voor authenticatie:

ssh-add -K ~/.ssh/id_rsa

Een veiligere methode: caching

We kunnen git-credential-store gebruiken om onze gebruikersnaam en wachtwoord voor een bepaalde tijd in de cache op te slaan. Typ eenvoudig het volgende in uw CLI (terminal of opdrachtprompt):

git config --global credential.helper cache

U kunt de time-outperiode (in seconden) ook als volgt instellen:

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

Een nog minder veilige methode

Git-credential-store kan ook worden gebruikt, maar bewaart wachtwoorden in platte tekst op uw schijf als zodanig:

git config credential.helper store

verouderde antwoord – Snel en onveilig

Dit is een onveilig -methode om uw wachtwoord in duidelijke tekst op te slaan. Als iemand de controle over uw computer wint, wordt uw wachtwoord blootgelegd!

U kunt uw gebruikersnaam en wachtwoord als volgt instellen:

git config --global user.name "your username"
git config --global user.password "your password"

Antwoord 4, Autoriteit 4%

Schakel de referentiehelper in zodat Git uw wachtwoord in het geheugen gedurende enige tijd opslaat:

Voer het volgende in:

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

Standaard zal Git uw wachtwoord gedurende 15 minuten cachen.

Voer het volgende in om de standaard wachtwoordcache-time-out te wijzigen:

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

van GitHub Help


Antwoord 5, Autoriteit 2%

U kunt de ~/.gitconfigbestand bewerken naar opslaan uw referenties

sudo nano ~/.gitconfig

die al

[user]
        email = [email protected]
        user = gitUSER

U moet onderaan dit bestand toevoegen.

[credential]
        helper = store

De reden waarom ik deze optie aanbeveel, is Oorzaak Het is wereldwijd en als u op een gegeven moment de optie moet verwijderen die u weet waar te gaan en het wijzigen.

Gebruik deze optie alleen in uw personal computer.

Als je dan aan | . trekt kloon| voer je git-wachtwoord in, in het algemeen wordt het wachtwoord opgeslagen in ~/.git-credentialsin het formaat

https://GITUSER:[email protected]

WAAR DOMEIN.XXX GITHUB.COM KAN ZIJN | BITBUCKET.ORG | ANDERE

Bekijk Documenten

Start uw terminal opnieuw.


Antwoord 6, autoriteit 2%

Plaats uw inloggegevens als volgt in de URL:

https://Username:Password@github.com/myRepoDir/myRepo.git

Je kunt het als volgt opslaan:

git remote add myrepo https://Userna...

…voorbeeld om het te gebruiken:

git push myrepo master


Dat is nu om de url-aliassen Lijst:

git remote -v

…en dat het commando om er een te verwijderen:

git remote rm myrepo


Antwoord 7

Ik denk dat het veiliger is om inloggegevens te cachen, in plaats van voor altijd op te slaan:

git config --global credential.helper 'cache --timeout=10800'

nu kun je je gebruikersnaam en wachtwoord invoeren (git pullof …), en git de komende 3 uur blijven gebruiken.

leuk en veilig.

Time-out is in seconden (3 uur in het voorbeeld).


Antwoord 8

Voor algemene instellingen opent u de terminal (van waar dan ook)
voer het volgende uit:

 git config --global user.name "your username"
  git config --global user.password "your password"

Daardoor zal elke lokale git repo die je op je computer hebt die informatie gebruiken.

U kunt voor elke repo afzonderlijk configureren door het volgende te doen:

  • open terminal in de repo-map.
  • voer het volgende uit:

    git config user.name "your username"
    git config user.password "your password"
    

Het heeft alleen invloed op die map (omdat uw configuratie lokaal is).


Antwoord 9

Na het doornemen van tientallenSO-berichten, blogs, enz., heb ik elkemethode uitgeprobeerd, en dit is wat ik bedacht. Het dekt ALLES.

De Vanilla DevOps Git-referenties & Cheatsheet voor privépakketten

Dit zijn alle manieren en tools waarmee je git veilig kunt authenticeren om een repository te klonen zonder een interactieve wachtwoordprompt.

  • SSH openbare sleutels
    • SSH_ASKPASS
  • API-toegangstokens
    • GIT_ASKPASS
    • .gitconfig plaats van
    • .gitconfig [referentie]
    • .git-credentials
    • .netrc
  • Privépakketten (gratis)
    • knooppunt / npm-pakket.json
    • python / pip / eggs requirements.txt
    • robijn edelstenen Gemfile
    • golang go.mod

De Zilveren Kogel

Wil je Just Works™? Dit is de magische zilveren kogel.

Verkrijg je toegangstoken (zie de sectie in de cheatsheet als je de Github- of Gitea-instructies daarvoor nodig hebt) en stel deze in een omgevingsvariabele in (zowel voor lokale ontwikkeling als implementatie):

MY_GIT_TOKEN=xxxxxxxxxxxxxxxx

Voor Github, kopieer en voer deze regels woordelijkuit:

git config --global url."https://api:[email protected]/".insteadOf "https://github.com/"
git config --global url."https://ssh:[email protected]/".insteadOf "ssh://[email protected]/"
git config --global url."https://git:[email protected]/".insteadOf "[email protected]:"

Gefeliciteerd, nu worden git-repository’s voor het automatisch klonen van tools niet belemmerd door een wachtwoordprompt, of het nu gaat om https of een van beide stijlen van ssh-url.

Gebruik je Github niet?

Voor andere platforms (Gitea, Github, Bitbucket) hoeft u alleen de URL te wijzigen. Wijzig de gebruikersnamen niet (hoewel ze willekeurig zijn, zijn ze nodig voor verschillende configuratie-items).

Compatibiliteit

Dit werkt lokaal in MacOS, Linux, Windows (in Bash), Docker, CircleCI, Heroku, Akkeris, etc.

Meer informatie

Zie de “.gitconfig plaats van” sectie van de cheatsheet.

Beveiliging

Zie het gedeelte ‘Beveiliging’ van de cheatsheet.


Antwoord 10

Je kunt git-credential-store gebruiken om je wachtwoorden onversleuteld op de schijf op te slaan, alleen beschermd door de machtigingen van het bestandssysteem.

Voorbeeld

$ 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]

U kunt de inloggegevens controleren die zijn opgeslagen in het bestand ~/.git-credentials

Ga voor meer informatie naar
git-credential-store – Helper om inloggegevens op schijf op te slaan


Antwoord 11

U bent veiliger als u SSH-verificatie gebruikt dan gebruikersnaam-/wachtwoordverificatie.

Als je een Mac gebruikt, is SSH-clientverificatie geïntegreerd in de MacOS-sleutelhanger. Nadat u een SSH-sleutel hebt gemaakt, typt u in uw terminal:

ssh-add -K ~/.ssh/id_rsa

Hiermee wordt de SSH-privésleutel aan de MacOS-sleutelhanger toegevoegd. De git-client gebruikt ssh wanneer deze verbinding maakt met de externe server. Zolang je je openbare ssh-sleutel bij de server hebt geregistreerd, komt het goed.


Antwoord 12

In dat geval heb je git-referentiehelper nodig om git te vertellen je GitHub-wachtwoord en gebruikersnaam te onthouden door de volgende opdrachtregel te gebruiken:

git config --global credential.helper wincred 

en als je repo gebruikt met een SSH-sleutel, dan heb je een SSH-sleutel nodig om te authenticeren.


Antwoord 13

Geen van de bovenstaande antwoorden werkte voor mij. Ik kreeg steeds het volgende elke keer dat ik wilde fetchof pull:

Enter passphrase for key '/Users/myusername/.ssh/id_rsa':


Voor Macs

Ik heb kunnen voorkomen dat mijn wachtwoordzin werd gevraagd door:

  1. Open config door uit te voeren: vi ~/.ssh/config
  2. Het volgende toegevoegd: UseKeychain yes
  3. Opgeslagen en afgesloten: druk op Escen voer vervolgens :wq!
  4. in


Voor Windows

Ik heb het werkend kunnen krijgen met behulp van de informatie in deze stackexchange:
https://unix.stackexchange.com/a/12201/348665


Antwoord 14

Afgezien van het bewerken van het bestand ~/.gitconfig, kunt u dit doen als u daarom vraagt:

git config --local --edit

of

git config --global --edit

Opmerking om altijd enkeleaanhalingstekens te gebruiken:

git config --local user.name 'your username'
git config --local user.password 'your password'

of

git config --global user.name 'your username'
git config --global user.password 'your password'

Uw gebruikersnaam en wachtwoord kunnen enkele tekens bevatten die uw wachtwoord zouden breken als u dubbele aanhalingstekens gebruikt.

--localof --globalbetekent dat configuratieparameters worden opgeslagen voor het project of voor de os-gebruiker.


Antwoord 15

gebruik gewoon

git config --global credential.helper store

en doe de git pull, het zal om gebruikersnaam en wachtwoord vragen, vanaf nu zal het geen prompt meer geven voor gebruikersnaam en wachtwoord, het zal de details opslaan


Antwoord 16

Bewaar gebruikersnaam en wachtwoord in .git-credentials

.git-credentialsis waar je gebruikersnaam en wachtwoord (toegangstoken) worden opgeslagen wanneer je git config --global credential.helper storeuitvoert, en dat is wat andere antwoorden voorstellen, en typ vervolgens uw gebruikersnaam en wachtwoord of toegangstoken:

https://${username_or_access_token}:${password_or_access_token}@github.com

Dus, om de gebruikersnaam en het wachtwoord (toegangstoken) op te slaan:

git config —-global credential.helper store
echo “https://${username}:${password_or_access_token}@github.com“ > ~/.git-credentials

Dit is erg handig voor github-robots, b.v. om Geautomatiseerde ketenbuilds in dezelfde docker-repository op te lossendoor regels voor verschillende branches te hebben en deze vervolgens te activeren door ernaar te pushen in de post_pushhooker in de docker-hub.

Een voorbeeld hiervan is hierin stackoverflow te zien.


Antwoord 17

Controleer de officiële git-documentatie:

Als je het SSH-transport gebruikt om verbinding te maken met afstandsbedieningen, is dat mogelijk
zodat u een sleutel zonder wachtwoordzin hebt, waarmee u:
veilig gegevens overdragen zonder uw gebruikersnaam en wachtwoord in te voeren.
Dit is echter niet mogelijk met de HTTP-protocollen – elke
verbinding heeft een gebruikersnaam en wachtwoord nodig. Dit wordt nog moeilijker voor
systemen met tweefactorauthenticatie, waarbij het token dat u gebruikt voor een
wachtwoord wordt willekeurig gegenereerd en onuitspreekbaar.

Gelukkig heeft Git een referentiesysteem dat hierbij kan helpen. Git
heeft een paar opties in de doos:

  • De standaardinstelling is om helemaal niet te cachen. Elke verbinding zal u vragen
    voor uw gebruikersnaam en wachtwoord.

  • De “cache”-modus houdt de inloggegevens gedurende een bepaalde periode van
    tijd. Geen van de wachtwoorden wordt ooit op schijf opgeslagen en dat zijn ze ook:
    verwijderd uit de cache na 15 minuten.

  • De “store”-modus slaat de inloggegevens op in een tekstbestand op schijf,
    en ze verlopen nooit. Dit betekent dat totdat u uw wachtwoord wijzigt
    voor de Git-host hoef je nooit je inloggegevens in te voeren
    opnieuw. Het nadeel van deze aanpak is dat je wachtwoorden worden opgeslagen
    in leesbare tekst in een gewoon bestand in uw thuismap.

  • Als je een Mac gebruikt, wordt Git geleverd met een “osxkeychain”-modus, die
    slaat inloggegevens op in de beveiligde sleutelhanger die aan uw
    systeem account. Deze methode slaat de inloggegevens op schijf op en ze
    verlopen nooit, maar ze zijn versleuteld met hetzelfde systeem dat opslaat
    HTTPS-certificaten en Safari automatisch ingevuld.

  • Als je Windows gebruikt, kun je een helper installeren met de naam “Git
    Credential Manager voor Windows.” Dit is vergelijkbaar met de “osxkeychain”
    hierboven beschreven helper, maar gebruikt de Windows Credential Store om
    gevoelige informatie beheren. Het is te vinden op
    https://github.com/Microsoft/Git-Credential-Manager-for-Windows .

Je kunt een van deze methoden kiezen door een Git-configuratie in te stellen
waarde:

$ git config --global credential.helper cache
$ git config --global credential.helper store

https://git-scm.com/book/ nl/v2/Git-Tools-Credential-Storage


Antwoord 18

Als je de Git Credential Manager op Windowsgebruikt…

git config -lzou moeten tonen:

credential.helper=manager

Als u echter niet om een referentie wordt gevraagd, volgt u deze stappen:

  1. Open Configuratieschermvanuit het menu Start
  2. Selecteer Gebruikersaccounts
  3. Selecteer Uw inloggegevens beherenin het linkermenu
  4. Verwijder alle inloggegevens met betrekking tot Git of GitHub

Zorg er ook voor dat u geenomgevingsvariabelen HTTP_PROXY, HTTPS_PROXY, NO_PROXYhebt ingesteld als u proxy en uw Git-server bevindt zich op het interne netwerk.

Je kunt Git fetch/push/pull ook testen met behulp van git-guidie linkt naar binaire bestanden voor referentiebeheer in C:\Users\<username>\AppData\Local\Programs\Git\mingw64\libexec\git-core


Antwoord 19

Na het lezen van de draad volledig en experimenteert met de meeste antwoorden op deze vraag, vond ik uiteindelijk de procedure die voor mij werkt. Ik wil het delen in het geval iemand te maken heeft met een complexe gebruikscase, maar nog steeds niet door de volledige draad en de Gitcredentials , gitcredentials-winkel etc. Man pagina’s, zoals ik deed.

VIND ONDER DE PROCEDURE I Suggereer Indien You (zoals ik) te maken hebben met verschillende repositories uit verschillende aanbieders (Gitlab, Github, Bitbucket, enz.) Met behulp van verschillende verschillende gebruikersnaam / wachtwoordcombinaties. Als u in plaats daarvan slechts één account hebt om mee samen te werken, dan is u misschien beter bij het gebruik van de git config --global credential.helper storeof git config --global user.name "your username"etc. Oplossingen die zeer goed zijn uitgelegd in eerdere antwoorden.

Mijn oplossing:

  1. Unset Global Credentials Helper, in het geval dat een voormalige experimentatie in de weg staat 🙂

> git config --global --unset credentials.helper

  1. Ga naar de hoofdmap van uw repo en schakel de lokale referentielulper (indien nodig)
  2. uit

> cd /path/to/my/repo

> git config --unset credential.helper

  1. Maak een bestand om de inloggegevens van uw REPO op te slaan in

> git config credential.helper 'store --file ~/.git_repo_credentials'

Opmerking: dit commando maakt een nieuw bestand aan met de naam “.git_repo_credentials” in je homedirectory, waarin Git je inloggegevens opslaat. Als je geen bestandsnaam opgeeft, gebruikt Git de standaard “.git_credentials”. In dit geval volstaat het geven van de volgende opdracht:

> git config credential.helper store

  1. stel je gebruikersnaam in

git config credential.*.username my_user_name

Opmerking: het gebruik van “*” is meestal ok als uw repositories van dezelfde provider zijn (bijv. GitLab). Als uw repositories in plaats daarvan door verschillende providers worden gehost, raad ik aan om de link naar de provider expliciet in te stellen voor elke repository, zoals in het volgende voorbeeld (voor GitLab):

git config credential.https://gitlab.com.username my_user_name

Als je op dit moment een commando geeft dat je inloggegevens vereist (bijv. git pull), wordt je gevraagd om het wachtwoord dat overeenkomt met “my_user_name”. Dit is maar één keer nodig omdat git de inloggegevens opslaat in “.git_repo_credentials” en automatisch dezelfde gegevens gebruikt bij volgende toegangen.


Antwoord 20

Uit de opmerking van rifrol, op Linux Ubuntu, uit dit antwoord, hier is hoe in Ubuntu:

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

Sommige andere distro’s leveren het binaire bestand, zodat je het niet hoeft te bouwen.

In OS X wordt het meestal “gebouwd” geleverd met een standaardmodule van “osxkeychain”, zodat u het gratis krijgt.


Antwoord 21

Voor Windows-gebruikers kijkt u naar het .gitconfig-bestand en controleert u wat er is geconfigureerd voor de referentiehulp als u het volgende heeft…

[referentie “helperselector”]
geselecteerd = gewonnen

u vindt de inloggegevens in Windows Credential Manager.

Daar kunt u de inloggegevens bewerken.

EDIT: Wincred is verouderd, zie…

https ://github.com/git-for-windows/git-sdk-64/tree/main/mingw64/doc/git-credential-manager

Dus als alternatief zou je git opnieuw kunnen configureren om de ingebouwde GIT-referentiemanager te gebruiken…

git config --global credential.helper manager

Antwoord 22

gebruikersnaam en wachtwoord globaal opslaan

git config --global user.name "fname lname"
git config --global user.email "[email protected]"
git config --global user.password "secret"

Specifieke instelling ophalen,

git config --global --get user.name
git config --global --get user.email
git config --global --get user.password

Alle git-instellingen ophalen

git config --list --show-origin

Antwoord 23

Voor Windows-gebruikers werkt deze manier

Opmerking: als je Twee-factor-authenticatie voor GitHub hebt ingeschakeld, schakel deze dan een tijdje uit

  • Stap 01

Goto Control Panel -> User Accounts -> Credential Manager -> Windows Credentials

  • Stap 02

Goto Generic Credentials section -> Add a generic credential

  • Stap 03 – Vul de velden in

Internet or network address : git.https://github.com
User name : your github username
Password : your github username

En klik nu op Ok. Hiermee worden het wachtwoord en de gebruikersnaam van uw GitHub-account op uw lokale computer opgeslagen


Antwoord 24

git config –global user.name “uw gebruikersnaam”

git config –global user.password “uw wachtwoord”

vink

git config –list

Other episodes