Kako popraviti da Git uvijek traži korisničke vjerodajnice za HTTP(S) autentifikaciju


Za pristup udaljenom Git spremištu ili rad s njim, možete koristiti SSH ili HTTP(S) protokole; sa prvim, kada su u pitanju privatna spremišta, možete jednostavno konfigurirati SSH ključeve bez šifre koja vam omogućava siguran prijenos podataka bez unošenja korisničkog imena i lozinke.

Međutim, sa HTTP(S), svaka konekcija će od vas tražiti da unesete svoje korisničko ime i lozinku (kada Git treba autentifikaciju za određeni URL kontekst) – korisnici Githuba to dobro znaju.

U ovom članku ćemo vam pokazati kako da popravite Git koji uvijek traži korisničke vjerodajnice za pristup preko HTTP(S). Objasnit ćemo različite načine sprječavanja da Git više puta traži korisničko ime i lozinku prilikom interakcije s udaljenim spremištem preko HTTP(S).

Kako instalirati Git u Linux

Ako nemate instaliran paket Git na vašem sistemu, pokrenite odgovarajuću naredbu za vašu Linux distribuciju da biste ga instalirali (koristite naredbu Sudo gdje je potrebno).

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]

Unošenje Git korisničkog imena i lozinke u udaljeni URL

Kao što smo ranije spomenuli, prilikom kloniranja udaljenog Git spremišta preko HTTP(S), svaka veza treba korisničko ime i lozinku kao što je prikazano.

Da spriječite Git da traži vaše korisničko ime i lozinku, možete unijeti vjerodajnice za prijavu u URL kao što je prikazano.


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

Glavni nedostatak ove metode je to što će vaše korisničko ime i lozinka biti sačuvani u naredbi u Shell historiji.

kao i u datoteci .git/config u lokalnom folderu, što predstavlja sigurnosni rizik.

cat .git/config

Napomena: Za korisnike Githuba koji su omogućili dvofaktorsku autentifikaciju ili pristupaju organizaciji koja koristi SAML jednostruku prijavu, morate generirajte i koristite lični token za pristup umjesto unosa lozinke za HTTPS Git (kao što je prikazano u primjerima izlaza u ovom vodiču). Da generišete lični pristupni token, u Githubu idite na Postavke => Postavke programera => Lični tokeni.

Čuvanje korisničkog imena i lozinke udaljenog Git spremišta na disk

Druga metoda je korištenje pomoćnika Git akreditiva za spremanje korisničkog imena i lozinke u običnu datoteku na disku kao što je prikazano.

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

Od sada, Git će pisati vjerodajnice u datoteku ~/.git-credentials za svaki URL kontekst, kada se pristupi po prvi put. Da vidite sadržaj ove datoteke, možete koristiti naredbu cat kao što je prikazano.

cat  ~/.git-credentials

Za naredne naredbe za isti URL kontekst, Git će pročitati vaše korisničke vjerodajnice iz gornje datoteke.

Baš kao i prethodni metod, ovaj način prosljeđivanja korisničkih akreditiva Git-u je također nesiguran jer je datoteka za pohranu nešifrirana i zaštićena je samo standardnim dozvolama sistema datoteka.

Treća metoda objašnjena u nastavku smatra se sigurnijom.

Keširanje korisničkog imena i lozinke udaljenog Git spremišta u memoriju

Na kraju, ali ne i najmanje važno, također možete koristiti Git pomoćnik za vjerodajnice da privremeno sačuvate svoje vjerodajnice u memoriji neko vrijeme. Da biste to učinili, izdajte sljedeću naredbu.

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

Nakon pokretanja gornje naredbe, kada prvi put pokušate pristupiti udaljenom privatnom spremištu, Git će tražiti vaše korisničko ime i lozinku i sačuvati ih u memoriji neko vrijeme.

Zadano vrijeme keširanja je 900 sekundi (ili 15 minuta), nakon čega će Git od vas tražiti da ponovo unesete svoje korisničko ime i lozinku. Možete ga promijeniti na sljedeći način (1800 sekundi=30 minuta ili 3600 sekundi=1 sat).

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

Za više informacija o Git-u i pomoćnicima za vjerodajnice, pogledajte njihove man stranice.

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

Je li ovaj vodič bio od pomoći? Obavijestite nas putem obrasca za povratne informacije u nastavku. Također možete podijeliti sva pitanja ili razmišljanja o ovoj temi.