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


Za pristup ili rad s udaljenim Git spremištem, možete koristiti ili SSH ili HTTP(S) protokole; s prvim, kada je riječ o privatnim spremištima, možete jednostavno konfigurirati SSH ključeve bez zaporke što vam omogućuje siguran prijenos podataka bez upisivanja korisničkog imena i lozinke.

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

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

Kako instalirati Git u Linux

Ako na vašem sustavu nemate instaliran paket Git, pokrenite odgovarajuću naredbu za svoju distribuciju Linuxa da biste ga instalirali (upotrijebite naredbu Sudo ako 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]

Unos Git korisničkog imena i lozinke u udaljeni URL

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

Kako biste spriječili da Git 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 će vaše korisničko ime i lozinka biti spremljeni u naredbi u datoteci povijesti Shell-a.

kao i u datoteci .git/config u lokalnoj mapi, što predstavlja sigurnosni rizik.

cat .git/config

Napomena: Za korisnike Githuba koji su omogućili dvofaktorsku autentifikaciju ili pristupaju organizaciji koja koristi SAML jedinstvenu prijavu, morate generirajte i koristite osobni pristupni token umjesto unosa svoje lozinke za HTTPS Git (kao što je prikazano u oglednim rezultatima u ovom vodiču). Da biste generirali osobni pristupni token, u Githubu idite na Postavke => Postavke za razvojne programere => Osobni pristupni tokeni.

Spremanje korisničkog imena i lozinke udaljenog Git repozitorija na disk

Druga metoda je korištenje pomoćnika Git vjerodajnica za spremanje vašeg 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 će Git pisati vjerodajnice u datoteku ~/.git-credentials za svaki URL kontekst, kada mu se pristupi prvi put. Za pregled sadržaja ove datoteke, možete koristiti naredbu cat kao što je prikazano.

cat  ~/.git-credentials

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

Baš kao i prethodna metoda, ovaj način prosljeđivanja korisničkih vjerodajnica Gitu također nije siguran budući da je datoteka za pohranu nekriptirana i zaštićena je samo standardnim dozvolama datotečnog sustava.

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

Predmemoriranje korisničkog imena i lozinke udaljenog Git repozitorija u memoriju

Na kraju, ali ne manje važno, također možete koristiti Git pomoćnik za vjerodajnice da privremeno spremite svoje vjerodajnice u memoriju na 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 repozitoriju, Git će tražiti vaše korisničko ime i lozinku i spremiti ih u memoriju neko vrijeme.

Zadano vrijeme predmemoriranja je 900 sekundi (ili 15 minuta), nakon čega će Git zatražiti da ponovno 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? Javite nam putem obrasca za povratne informacije u nastavku. Također možete podijeliti sva pitanja ili misli o ovoj temi.