Hvordan fikse Git som alltid ber om brukerlegitimasjon for HTTP(S)-autentisering


For å få tilgang til eller arbeide med et eksternt Git-lager, kan du enten bruke SSH- eller HTTP(S)-protokoller; med førstnevnte, når det gjelder private depoter, kan du ganske enkelt konfigurere SSH-nøkler uten en passordfrase som lar deg overføre data på en sikker måte uten å skrive inn brukernavn og passord.

Men med HTTP(S) vil hver tilkobling be deg om å skrive inn brukernavn og passord (når Git trenger autentisering for en bestemt URL-kontekst) – Github-brukere vet dette godt.

I denne artikkelen vil vi vise deg hvordan du fikser Git som alltid ber om brukerlegitimasjon for tilgang over HTTP(S). Vi vil forklare forskjellige måter å forhindre at Git gjentatte ganger ber om brukernavn og passord når du samhandler med et eksternt depot over HTTP(S).

Hvordan installere Git i Linux

Hvis du ikke har Git-pakken installert på systemet ditt, kjør den riktige kommandoen for Linux-distribusjonen din for å installere den (bruk kommandoen Sudo der det er nødvendig).

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]

Skriv inn Git-brukernavn og passord i ekstern URL

Som vi nevnte tidligere, når du kloner et eksternt Git-lager over HTTP(S), trenger hver tilkobling et brukernavn og passord som vist.

For å forhindre at Git ber om brukernavnet og passordet ditt, kan du skrive inn påloggingsinformasjonen 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 ulempen med denne metoden er at brukernavnet og passordet blir lagret i kommandoen i Shell-historikkfilen.

så vel som i .git/config-filen under den lokale mappen, som utgjør en sikkerhetsrisiko.

cat .git/config

Merk: For Github-brukere som har aktivert tofaktorautentisering, eller som har tilgang til en organisasjon som bruker SAML enkeltpålogging, må du generere og bruke et personlig tilgangstoken i stedet for å skrive inn passordet ditt for HTTPS Git (som vist i eksempelutgangene i denne veiledningen). For å generere et personlig tilgangstoken, i Github, gå til Innstillinger => Utviklerinnstillinger => Personlige tilgangstokener.

Lagrer Remote Git Repository brukernavn og passord på disk

Den andre metoden er å bruke Git-legitimasjonshjelperen til å lagre brukernavnet og passordet ditt i en vanlig fil på disken som vist.

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

Fra nå av vil Git skrive legitimasjon til ~/.git-credentials-filen for hver URL-kontekst, når den åpnes for første gang. For å se innholdet i denne filen, kan du bruke cat-kommandoen som vist.

cat  ~/.git-credentials

For påfølgende kommandoer for samme URL-kontekst, vil Git lese brukerlegitimasjonen din fra filen ovenfor.

Akkurat som den forrige metoden, er denne måten å sende brukerlegitimasjon til Git også usikker siden lagringsfilen er ukryptert og den er kun beskyttet av standard filsystemtillatelser.

Den tredje metoden som er forklart nedenfor, anses som sikrere.

Bufring av Remote Git Repository brukernavn og passord i minnet

Sist, men ikke minst, kan du også bruke Git-legitimasjonshjelperen for å lagre legitimasjonen din midlertidig i minnet en stund. For å gjøre det, utfør følgende kommando.

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

Etter å ha kjørt kommandoen ovenfor, når du prøver å få tilgang til et eksternt privat depot for første gang, vil Git be om brukernavnet og passordet ditt og lagre det i minnet i en stund.

Standard hurtigbuffertid er 900 sekunder (eller 15 minutter), hvoretter Git vil be deg om å skrive inn brukernavnet og passordet ditt på nytt. Du kan endre 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 mer informasjon om Git og legitimasjonshjelpere, se man-sidene deres.

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

Var denne veiledningen nyttig? Gi oss beskjed via tilbakemeldingsskjemaet nedenfor. Du kan også dele spørsmål eller tanker om dette emnet.