Bekymringsfri tilgang til private GitHub-depoter
Det er ingen hemmelighet at repeterende oppgaver kan være både kjedelige og frustrerende, særlig for programmerere. En av disse oppgavene er interaksjon med private depoter på GitHub. Du vet sikkert hva det innebærer, og du har sannsynligvis lett etter en løsning, noe som har ført deg hit. Fortsett å lese, og du slipper å lete lenger!
I denne artikkelen skal vi se nærmere på hvordan du kan få tilgang til private GitHub-depoter uten å måtte skrive inn passordet ditt hver gang. Uten videre introduksjon, la oss sette i gang.
Det finnes to hovedmetoder for å få tilgang til GitHub-depoter: HTTPS og SSH. De fleste bruker nok HTTPS, men det er ikke den mest effektive måten å klone private depoter på.
Tilgang innebærer handlinger som kloning, opplasting, nedlasting og alle andre operasjoner som oppdaterer depotet vårt. Offentlige depoter er ikke noe problem, men private depoter krever autentisering. Det finnes flere måter å gjøre dette på.
La oss starte med den mest kjente metoden…
HTTPS-metoden
Du er sannsynligvis kjent med HTTPS og leter etter alternativer. La oss se raskt hvordan du får tilgang til et privat depot ved hjelp av HTTPS.
- Kopier lenken til det private depotet ditt.
GitHub Private Repository
- Åpne terminalen eller kommandoprompten på datamaskinen din.
- Lim inn kommandoen
git clone [lenke]
for å klone depotet. - Bytt ut `[lenke]` med den faktiske lenken til ditt private depot.
- Systemet vil be om autentisering. Du må da oppgi GitHub-legitimasjonen din.
- Først blir du bedt om å skrive inn GitHub-brukernavnet ditt. Gjør det og trykk Enter.
- Nå må du skrive inn passordet ditt. Skriv det inn og trykk Enter.
Det er det. Du har klonet depotet ved hjelp av HTTPS. Nå, gjør noen endringer i depotet, lagre dem, og send dem til det eksterne depotet.
Hva legger du merke til?
Den ber om autentisering igjen!
Er det ikke frustrerende å måtte skrive inn legitimasjonen din hver gang du samhandler med det private depotet?
Jo, det er det.
Det er både tidkrevende og ineffektivt å måtte legge inn GitHub-legitimasjonen vår hver gang. Heldigvis finnes det flere måter å unngå dette problemet på. Den beste metoden er å bruke SSH, men det finnes også andre alternativer. La oss se på dem.
.git config-metoden
All informasjon om versjonskontroll lagres i .git-katalogen, som er en skjult mappe. Inni denne mappen finner du en konfigurasjonsfil som lar deg endre innstillinger. Det er generelt ikke anbefalt å redigere denne filen direkte.
Vi kan klone et privat depot ved å legge til brukernavnet og passordet direkte i URL-en til depotet, slik:
git clone https://brukernavn:passord@github.com/brukernavn/depotnavn.git
Erstatt brukernavn, passord og depotnavn med dine egne detaljer. Siden legitimasjonen er oppgitt i URL-en, slipper du å autentisere deg på nytt.
Vi skal nå oppdatere depotets konfigurasjon. La oss se trinnene for å slippe autentisering ved å oppdatere URL-en.
- Åpne .git-mappen i det klonede depotet.
- Du finner en fil som heter `config`. Åpne den med en teksteditor.
- Du vil se en linje som inneholder depotlenken din, som vist nedenfor.
- Oppdater URL-en ved å legge til brukernavn og passord, som vist over.
Nå kan du oppdatere depotet, lagre og pushe endringene.
Ser du noe?
Du skal ikke lenger bli bedt om GitHub-legitimasjon. Problemet er løst ved å oppdatere depotinnstillingene.
Du har kanskje lagt merke til at dette ikke er sikkert da vi avslører legitimasjonen vår. Metoden vil heller ikke fungere om GitHub-passordet ditt inneholder @-tegn.
Det er altså noen ulemper med denne metoden. La oss derfor se på en annen løsning.
credential.helper
Med `credential.helper` kan vi lagre legitimasjonen vår permanent i filen `~/.git-credentials`.
Legitimasjonen lagres første gang den oppgis. Neste gang du prøver å få tilgang til det private depotet, slipper du å logge inn så lenge legitimasjonen er lagret. La oss se hvordan dette fungerer.
- Først må vi aktivere lagring av legitimasjon med kommandoen
git config credential.helper store
. - Deretter prøver du å få tilgang til det private depotet med brukernavn og passord.
- Etter at brukernavn og passord er oppgitt, blir legitimasjonen lagret i filen `~/.git-credentials` som følger:
Gjør nå de samme oppdateringene, lagre og push. Hvis du har fulgt trinnene riktig, vil du ikke bli bedt om legitimasjon.
Flott!
Hva om du bare vil lagre legitimasjonen i fire timer, ikke for alltid?
Med `credential.helper` kan du også lagre legitimasjonen midlertidig med en «cache». Denne mellomlagringen lagrer legitimasjonen i 15 minutter som standard. Etter 15 minutter vil du igjen bli bedt om å logge inn. Vi kan endre denne tiden ved å bruke følgende kommando:
git config credential.helper 'cache --timeout={tid_i_sekunder}'
Husk å oppgi tiden i sekunder. La oss se hvordan det virker:
- Aktiver caching av påloggingsinformasjon med kommandoen
git config credential.helper cache
. - Få tilgang til det private depotet med brukernavn og passord.
- Når du har skrevet inn brukernavn og passord, lagres GitHub-legitimasjonen i cache i den gitte tidsperioden.
Gjør de samme endringene, lagre og push. Du vil ikke bli bedt om legitimasjon så lenge legitimasjonen er lagret i cache.
Kommandoene over fungerer i et git-initialisert depot. Du kan oppdatere git-konfigurasjonen globalt for alle prosjekter med `–global`-flagget.
Personlige tilgangstokener
Personlige tilgangstokener brukes for å gi tilgang til GitHub API. De er som OAuth-tokens og kan brukes i stedet for passord for git-autentisering. La oss se hvordan du bruker dem:
- Logg deg på GitHub-kontoen din.
- Gå til Innstillinger.
- Gå til Utviklerinnstillinger i venstre navigasjonslinje.
- Klikk på Personlige tilgangstokener.
- Klikk på Generer ny token.
- Skriv inn en beskrivelse for tokenet.
- Velg tillatelsene for tokenet. Velg `repo`.
- Rull ned og klikk på Generer token.
- Personlige tilgangstokenet vises bare én gang. Kopier det og lagre det på et sikkert sted. Bruk en passordbehandler om nødvendig.
- Vi har opprettet et personlig tilgangstoken.
- Nå kan vi bruke det for å få tilgang til vårt private depot.
- Oppdater URL-en i `.git/config` filen til `https://{personlig_tilgangstoken}@github.com/hafeezulkareem/private_repository.git` på samme måte som med den første metoden.
Prøv nå å få tilgang til det private depotet.
Ble du bedt om å autentisere deg?
Nei, så lenge tokenet er aktivt. La oss nå se på den siste metoden.
SSH
SSH brukes til å autentisere seg. Du finner dokumentasjon om SSH på GitHub her.
Ideen er enkel: Generer en SSH-nøkkel, legg den til GitHub-kontoen din, og du har passordløs autentisering.
La oss se på disse tre trinnene i detalj:
- Åpne terminalen eller kommandoprompten.
- Skriv inn kommandoen
ssh-keygen -t rsa
for å generere en ny SSH-nøkkel. - Systemet vil be om en mappe for å lagre nøkkelen. Trykk Enter for å velge standardmappen, eller oppgi en annen mappe. La oss bruke standardmappen.
- Nå må du oppgi et passord for å beskytte SSH-nøkkelen. Dette er valgfritt.
- Hvis du velger et passord, må du oppgi det hver gang du starter systemet.
- Hvis du ikke velger passord, trenger du ikke å oppgi det hver gang.
- Skriv inn passordet på nytt for å bekrefte det.
- Til slutt genereres en ny SSH-nøkkel.
Vi har nå generert en ny SSH-nøkkel. Det blir opprettet to filer som vist nedenfor (filnavnene kan variere hvis du har endret plassering):
Nå må vi koble til GitHub-kontoen vår. Innholdet i filen med filtypen `.pub` må kopieres til GitHub-kontoen vår for å etablere tilkoblingen. I mitt tilfelle er det `id_rsa.pub`.
- Logg deg på GitHub-kontoen din.
- Åpne Innstillinger.
- Klikk på SSH- og GPG-nøkler.
- Klikk på Ny SSH-nøkkel for å legge til den nye SSH-nøkkelen.
- Du vil bli ført til følgende skjermbilde:
- Legg til en beskrivelse for SSH-nøkkelen. Siden SSH-nøkler er unike for hvert system, er det lurt å navngi dem deretter.
- Kopier og lim inn innholdet fra `.pub`-filen inn i det andre feltet.
- Trykk til slutt på Legg til SSH-nøkkel, og bekreft med GitHub-passordet ditt.
- Den nye SSH-nøkkelen skal se slik ut:
Vi har lagt til SSH-nøkkelen til GitHub. Nå må vi autentisere SSH-tilkoblingen. Skriv følgende kommando i terminalen:
ssh -T [email protected]
Systemet vil be om bekreftelse. Bekreft det, så er du ferdig!
Klon nå det private depotet. Du skal ikke bli bedt om å autentisere deg.
Gjør noen endringer, lagre dem, og send dem til depotet. Du skal ikke bli bedt om autentisering lenger.
Konklusjon
Vi har nå sett på flere metoder for å få tilgang til private depoter uten å måtte skrive inn passordet hele tiden. Du kan bruke den metoden du foretrekker, men den beste og mest brukte metoden er SSH.
Det er ingen streng regel for hvilken metode du må bruke. Men de fleste virksomheter bruker SSH, da det er sikkert og tidsbesparende. Husk alltid å ta vare på legitimasjonen din.
Lykke til med utviklingen! 🙂