Zoeken op website

Hoe Git te repareren die altijd om gebruikersgegevens vraagt voor HTTP(S)-authenticatie


Om toegang te krijgen tot of te werken met een externe Git-repository, kun je het SSH- of HTTP(S)-protocol gebruiken; bij de eerste kunt u, als het om privéopslagplaatsen gaat, eenvoudig SSH-sleutels configureren zonder wachtwoordzin, waardoor u veilig gegevens kunt overbrengen zonder uw gebruikersnaam en wachtwoord in te typen.

Met HTTP(S) zal elke verbinding je echter vragen om je gebruikersnaam en wachtwoord in te voeren (wanneer Git authenticatie nodig heeft voor een bepaalde URL-context) – Github-gebruikers weten dit goed.

In dit artikel laten we je zien hoe je kunt oplossen dat Git altijd om gebruikersgegevens vraagt voor toegang via HTTP(S). We zullen verschillende manieren uitleggen om te voorkomen dat Git herhaaldelijk om gebruikersnaam en wachtwoord vraagt bij interactie met een externe opslagplaats via HTTP(S).

Hoe Git onder Linux te installeren

Als je het Git pakket niet op je systeem hebt geïnstalleerd, voer dan de juiste opdracht voor je Linux-distributie uit om het te installeren (gebruik waar nodig de opdracht Sudo).

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]

Git-gebruikersnaam en wachtwoord invoeren in externe URL

Zoals we eerder hadden vermeld, heeft elke verbinding bij het klonen van een externe Git repository via HTTP(S) een gebruikersnaam en wachtwoord nodig zoals weergegeven.

Om te voorkomen dat Git om je gebruikersnaam en wachtwoord vraagt, kun je de inloggegevens in de URL invoeren, zoals weergegeven.


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

Het belangrijkste nadeel van deze methode is dat uw gebruikersnaam en wachtwoord worden opgeslagen in de opdracht in het Shell-geschiedenisbestand.

evenals in het .git/config bestand onder de lokale map, wat een veiligheidsrisico met zich meebrengt.

cat .git/config

Opmerking: voor Github-gebruikers die tweefactorauthenticatie hebben ingeschakeld, of toegang hebben tot een organisatie die SAML eenmalige aanmelding gebruikt, moet u genereer en gebruik een persoonlijk toegangstoken in plaats van uw wachtwoord in te voeren voor HTTPS Git (zoals weergegeven in de voorbeelduitvoer in deze handleiding). Om een persoonlijk toegangstoken te genereren, ga je in Github naar Instellingen => Ontwikkelaarsinstellingen => Persoonlijke toegangstokens.

Externe Git Repository-gebruikersnaam en wachtwoord op schijf opslaan

De tweede methode is om de Git-inloggegevenshelper te gebruiken om je gebruikersnaam en wachtwoord op te slaan in een gewoon bestand op schijf, zoals weergegeven.

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

Vanaf nu zal Git inloggegevens naar het ~/.git-credentials bestand schrijven voor elke URL-context, wanneer deze voor de eerste keer wordt geopend. Om de inhoud van dit bestand te bekijken, kunt u het cat-commando gebruiken, zoals weergegeven.

cat  ~/.git-credentials

Voor volgende commando's voor dezelfde URL-context zal Git je gebruikersgegevens uit het bovenstaande bestand lezen.

Net als de vorige methode is deze manier om gebruikersgegevens door te geven aan Git ook onveilig, omdat het opslagbestand niet versleuteld is en alleen wordt beschermd door standaard bestandssysteemrechten.

De derde methode die hieronder wordt uitgelegd, wordt als veiliger beschouwd.

Caching van externe Git Repository-gebruikersnaam en wachtwoord in het geheugen

Tenslotte kunt u ook de Git-inloggegevenshulp gebruiken om uw inloggegevens tijdelijk in het geheugen op te slaan. Om dat te doen, geeft u de volgende opdracht.

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

Nadat je het bovenstaande commando hebt uitgevoerd, zal Git, wanneer je voor de eerste keer probeert toegang te krijgen tot een externe privérepository, om je gebruikersnaam en wachtwoord vragen en deze een tijdje in het geheugen opslaan.

De standaard cachetijd is 900 seconden (of 15 minuten), waarna Git je zal vragen je gebruikersnaam en wachtwoord opnieuw in te voeren. U kunt dit als volgt wijzigen (1800 seconden=30 minuten of 3600 seconden=1 uur).

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

Voor meer informatie over Git en inloghulpen, zie hun manpagina's.

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

Was deze gids nuttig? Laat het ons weten via onderstaand feedbackformulier. U kunt ook uw vragen of gedachten over dit onderwerp delen.