Kuinka korjata Git aina kysyy käyttäjän tunnistetietoja HTTP(S)-todennusta varten


Jos haluat käyttää Git-etävarastoa tai työskennellä sen kanssa, voit käyttää joko SSH- tai HTTP(S)-protokollia. Ensin mainitussa, kun kyse on yksityisistä arkistoista, voit yksinkertaisesti määrittää SSH-avaimet ilman tunnuslausetta, jonka avulla voit siirtää tietoja turvallisesti kirjoittamatta käyttäjätunnusta ja salasanaa.

Kuitenkin HTTP(S):n kanssa jokainen yhteys kehottaa sinua syöttämään käyttäjänimesi ja salasanasi (kun Git tarvitsee todennuksen tiettyä URL-kontekstia varten) – Githubin käyttäjät tietävät tämän hyvin.

Tässä artikkelissa näytämme, kuinka korjataan Git, joka pyytää aina käyttäjän kirjautumistietoja HTTP(S)-käyttöä varten. Selitämme erilaisia tapoja estää Gitiä pyytämästä toistuvasti käyttäjätunnusta ja salasanaa, kun se on vuorovaikutuksessa etävaraston kanssa HTTP(S) -palvelun kautta.

Kuinka asentaa Git Linuxiin

Jos sinulla ei ole Git-pakettia asennettuna järjestelmääsi, asenna se suorittamalla Linux-jakelullesi sopiva komento (käytä Sudo-komentoa tarvittaessa).

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-käyttäjätunnuksen ja salasanan syöttäminen etä-URL-osoitteeseen

Kuten mainittiin aiemmin, kloonattaessa Git-etävarastoa HTTP(S)-yhteydellä jokainen yhteys tarvitsee käyttäjätunnuksen ja salasanan. kuvan mukaisesti.

Voit estää Gitiä pyytämästä käyttäjänimeäsi ja salasanaa syöttämällä kirjautumistiedot URL-osoitteeseen kuvan osoittamalla tavalla.


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

Tämän menetelmän suurin haittapuoli on, että käyttäjänimesi ja salasanasi tallennetaan komentoon Shell-historiatiedostossa.

sekä paikallisen kansion alla olevaan .git/config-tiedostoon, mikä aiheuttaa turvallisuusriskin.

cat .git/config

Huomaa: Github-käyttäjille, jotka ovat ottaneet käyttöön kaksivaiheisen todennuksen tai jotka käyttävät organisaatiota, joka käyttää SAML-kertakirjautumista, sinun on luo ja käytä henkilökohtaista käyttötunnusta HTTPS Gitin salasanan kirjoittamisen sijaan (kuten tämän oppaan esimerkkitulosteissa näkyy). Luo henkilökohtainen käyttöoikeustunnus Githubissa siirtymällä kohtaan Asetukset => Kehittäjäasetukset => Henkilökohtaiset käyttöoikeudet.

Etä Git Repository -käyttäjätunnuksen ja salasanan tallentaminen levylle

Toinen tapa on tallentaa käyttäjätunnuksesi ja salasanasi tavallisena tiedostona levylle käyttämällä Git-tunnistetietojen apuohjelmaa.

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

Tästä eteenpäin Git kirjoittaa kirjautumistiedot ~/.git-credentials-tiedostoon jokaiselle URL-kontekstille, kun sitä käytetään ensimmäisen kerran. Voit tarkastella tämän tiedoston sisältöä käyttämällä cat-komentoa kuvan mukaisesti.

cat  ~/.git-credentials

Saman URL-kontekstin myöhempiä komentoja varten Git lukee käyttäjätietosi yllä olevasta tiedostosta.

Kuten edellinen menetelmä, myös tämä tapa siirtää käyttäjätunnukset Gitille on epävarma, koska tallennustiedosto on salaamaton ja se on suojattu vain tavallisilla tiedostojärjestelmän käyttöoikeuksilla.

Alla selitettyä kolmatta menetelmää pidetään turvallisempana.

Tallenna Remote Git Repository -käyttäjätunnus ja salasana välimuistiin

Viimeisenä mutta ei vähäisimpänä, voit myös käyttää Git-kirjautumisapuohjelmaa kirjautumistietojesi väliaikaiseen tallentamiseen muistiin joksikin aikaa. Voit tehdä sen antamalla seuraavan komennon.

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

Yllä olevan komennon suorittamisen jälkeen, kun yrität käyttää yksityistä etävarastoa ensimmäistä kertaa, Git kysyy käyttäjätunnustasi ja salasanaasi ja tallentaa ne muistiin jonkin aikaa.

Oletusvälimuistin aika on 900 sekuntia (tai 15 minuuttia), jonka jälkeen Git pyytää sinua antamaan käyttäjätunnuksesi ja salasanasi uudelleen. Voit muuttaa sitä seuraavasti (1800 sekuntia=30 minuuttia tai 3600 sekuntia=1 tunti).

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

Lisätietoja Gitistä ja käyttöoikeusapuohjelmista on heidän man-sivuillaan.

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

Oliko tästä oppaasta apua? Kerro meille alla olevan palautelomakkeen kautta. Voit myös jakaa kysymyksiä tai ajatuksia tästä aiheesta.