Sådan repareres Git, der altid beder om brugerlegitimationsoplysninger til HTTP (S) -godkendelse


For at få adgang til eller arbejde med et eksternt Git-arkiv kan du enten bruge SSH- eller HTTP (S) -protokoller; med den førstnævnte, når det kommer til private arkiver, kan du simpelthen konfigurere SSH-nøgler uden en adgangssætning, der giver dig mulighed for sikkert at overføre data uden at indtaste dit brugernavn og din adgangskode.

Imidlertid med HTTP (S) vil enhver forbindelse bede dig om at indtaste dit brugernavn og din adgangskode (når Git har brug for godkendelse til en bestemt URL-kontekst) - Github-brugere kender dette godt.

I denne artikel viser vi dig, hvordan du løser Git, der altid beder om brugeroplysninger for adgang via HTTP (S). Vi vil forklare forskellige måder at forhindre, at Git gentagne gange beder om brugernavn og adgangskode, når de interagerer med et eksternt lager over HTTP (S).

Sådan installeres Git i Linux

Hvis du ikke har Git-pakken installeret på dit system, skal du køre den relevante kommando til din Linux-distribution for at installere den (brug kommandoen Sudo, hvor det er nødvendigt).

$ sudo apt install git      [On Debian/Ubuntu]
# yum install git           [On CentOS/RHEL/Fedora]
$ sudo zypper install git   [On OpenSuse]
$ sudo pacman -S git        [On Arch Linux]

Indtast Git-brugernavn og adgangskode i Remote URL

Som vi tidligere har nævnt, når kloning af et eksternt Git-lager over HTTP (S), har enhver forbindelse brug for et brugernavn og en adgangskode som vist.

For at forhindre Git i at bede om dit brugernavn og din adgangskode, kan du indtaste loginoplysningerne i URL'en som vist.

$ sudo git clone https://username:[email /username/repo_name.git
OR
$ sudo git clone https://username:[email /username/repo_name.git local_folder

Den største ulempe ved denne metode, at dit brugernavn og din adgangskode gemmes i kommandoen i Shell-historikfilen.

såvel som i .git/config-filen under den lokale mappe, som har en sikkerhedsrisiko.

$ cat .git/config

Bemærk: For Github-brugere, der har aktiveret tofaktorautentificering eller har adgang til en organisation, der bruger SAML single sign-on, skal du generere og bruge et personligt adgangstoken i stedet for at indtaste din adgangskode til HTTPS Git (som vist i prøveudgangene) i denne vejledning). For at generere et personligt adgangstoken skal du i Github gå til Indstillinger => Udviklerindstillinger => Personlige adgangstokener.

Gemme brugernavn og adgangskode til Remote Git Repository på Disk

Den anden metode er at bruge Git-legitimationshjælpen til at gemme dit brugernavn og din adgangskode i en almindelig fil på disken som vist.

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

Fra nu af skriver Git legitimationsoplysninger til ~/.git-legitimationsfilen for hver URL-kontekst, når den åbnes for første gang. For at se indholdet af denne fil kan du bruge cat-kommandoen som vist.

$ cat  ~/.git-credentials

For efterfølgende kommandoer for den samme URL-kontekst læser Git dine brugeroplysninger fra ovenstående fil.

Ligesom den foregående metode er denne måde at videregive brugeroplysninger til Git også usikker på, da lagringsfilen er ukrypteret, og den kun er beskyttet af standardfilsystemtilladelser.

Den tredje metode, der er forklaret nedenfor, betragtes som mere sikker.

Caching Remote Git Repository Brugernavn og adgangskode i hukommelsen

Sidst men ikke mindst kan du også bruge Git-legitimationshjælperen til midlertidigt at gemme dine legitimationsoplysninger i hukommelsen i nogen tid. For at gøre det skal du udstede følgende kommando.

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

Efter at have kørt ovenstående kommando, når du forsøger at få adgang til et privat privat arkiv for første gang, vil Git bede om dit brugernavn og din adgangskode og gemme det i hukommelsen i nogen tid.

Standard cachetiden er 900 sekunder (eller 15 minutter), hvorefter Git beder dig om at indtaste dit brugernavn og din adgangskode igen. Du kan ændre det som følger (1800 sekunder = 30 minutter eller 3600 sekunder = 1 time).

$ git config --global credential.helper 'cache --timeout=18000'
OR
$ git config --global credential.helper 'cache --timeout=36000'

For mere information om Git og legitimationsoplysninger hjælpere, se deres mand sider.

$ man git
$ man git-credential-cache
$ man git-credential-store

Var denne guide nyttig? Fortæl os det via feedbackformularen nedenfor. Du kan lige så godt dele spørgsmål eller tanker om dette emne.