Ar yra būdas talpinti į talpyklą "GitHub" kredencialus, kad būtų galima stumti pakeitimus?

Neseniai pradėjau sinchronizuoti savo saugyklas su "GitHub" https:// (dėl ugniasienės problemų), ir kiekvieną kartą prašoma slaptažodžio.

Ar yra koks nors būdas talpinti slaptažodžius į talpyklą, užuot kiekvieną kartą autentifikavus git push?

Sprendimas

Su "Git" 1.7.9 ir vėlesne versija

Nuo "Git 1.7.9" versijos (išleistos 2012 m. sausio mėn. pabaigoje) "Git" įdiegtas tvarkingas mechanizmas, vadinamas įgaliojimų pagalbininkais, leidžiantis išvengti nuolatinio slaptažodžio įvedimo HTTP / HTTPS. (Ačiū dazonic už tai, kad žemiau esančiuose komentaruose atkreipė dėmesį į šią naują funkciją.)

Naudodami "Git 1.7.9" ar naujesnę versiją, galite tiesiog naudoti vieną iš šių įgaliojimų pagalbininkų:

git config --global credential.helper cache

... kuris nurodo "Git" laikyti slaptažodį atmintyje (pagal nutylėjimą) 15 minučių. Galite nustatyti ilgesnį laiko tarpą naudodami:

git config --global credential.helper "cache --timeout=3600"

(Šis pavyzdys buvo pasiūlytas GitHub pagalbos puslapyje "Linux").) Taip pat, jei norite, galite nuolat saugoti savo prisijungimo duomenis, žr. kitus toliau pateiktus atsakymus.

GitHub pagalba taip pat siūlo, kad jei naudojate Mac OS X ir Git įdiegimui naudojote Homebrew, galite naudoti vietinę Mac OS X raktų saugyklą su:

git config --global credential.helper osxkeychain

Windows sistemai yra pagalbinė programa Git Credential Manager for Windows arba wincred in msysgit.

git config --global credential.helper wincred # obsolete

Su Git for Windows 2.7.3+ (2016 m. kovo mėn.):

git config --global credential.helper manager

Linux sistemoje galite naudoti gnome-keyring(arba kitą raktų rinkinio realizaciją, pavyzdžiui, KWallet).

Su "Git" versijomis iki 1.7.9

Naudojant "Git" versijas, ankstesnes nei 1.7.9, ši saugesnė parinktis nepasiekiama, todėl turėsite pakeisti URL adresą, kurį naudoja jūsų origin remote, kad slaptažodis būtų įtrauktas tokiu būdu:

https://you:password@github.com/you/example.git

... kitaip tariant, po vartotojo vardo ir prieš @ įrašykite :password.

Galite nustatyti naują nuotolinio pradžios URL adresą, naudodami:

git config remote.origin.url https://you:password@github.com/you/example.git

Įsitikinkite, kad naudojate https, ir turėtumėte žinoti, kad tokiu atveju jūsų "GitHub" slaptažodis bus saugomas atviru tekstu jūsų .git kataloge, o tai akivaizdžiai nepageidautina.

Naudodami bet kurią "Git" versiją (nuo versijos 0.99)

Alternatyvus būdas - įrašyti savo vartotojo vardą ir slaptažodį į ~/.netrc failą, nors, kaip ir laikant slaptažodį nutolusiame URL, tai reiškia, kad jūsų slaptažodis bus saugomas diske atviru tekstu, todėl yra mažiau saugus ir nerekomenduojamas. Tačiau jei norite taikyti šį metodą, į ~/.netrc failą įrašykite šią eilutę:

machine  login  password 

... vietoj įrašykite serverio pagrindinį vardą, o ir `` - savo vartotojo vardą ir slaptažodį. Taip pat nepamirškite šiam failui nustatyti ribojančias failų sistemos teises:

chmod 600 ~/.netrc

Atkreipkite dėmesį, kad "Windows" sistemoje šis failas turėtų vadintis _netrc ir jums gali tekti nustatyti aplinkos kintamąjį %HOME% - daugiau informacijos žr:

Komentarai (26)

Taip pat galite nustatyti, kad "Git" nuolat saugotų jūsų įgaliojimus, naudodami šiuos veiksmus:

git config credential.helper store

Pastaba: Nors tai patogu, "Git" išsaugos jūsų įgaliojimus atviru tekstu vietiniame faile (.git-credentials), esančiame jūsų projekto kataloge (žr. toliau "home" katalogą). Jei jums tai nepatinka, ištrinkite šį failą ir naudokite talpyklos parinktį.

Jei norite, kad "Git" vėl neprašytų jūsų duomenų kiekvieną kartą, kai reikia prisijungti prie nutolusios saugyklos, galite paleisti šią komandą:

git config --unset credential.helper

Norėdami slaptažodžius saugoti .git-credentials kataloge %HOME%, o ne projekto kataloge: naudokite --global vėliavėlę

git config --global credential.helper store
Komentarai (11)

Jei nenorite saugoti slaptažodžio atviru tekstu, kaip sakė Markas, galite naudoti kitokį "GitHub" URL adresą, kad gautumėte duomenis, nei juos siunčiate. Konfigūracijos failo skiltyje [remote "origin"]:

url = git://github.com/you/projectName.git
pushurl = git@github.com:you/projectName.git

Siunčiant vis tiek bus prašoma slaptažodžio, bet ne imant, bent jau atvirojo kodo projektams.

Komentarai (0)