Ar yra būdas praleisti slaptažodį, kai naudojate https: // „GitHub“?

Neseniai perjungiau savo saugyklų sinchronizavimą į https: // „GitHub“ (dėl problemų dėl užkardos) ir kiekvieną kartą, kai prašau slaptažodžio. Aš turėjau SSH sertifikatą, ir tai buvo pakankamai. Ar yra būdas išvengti mano slaptažodžio (naudojant http / https)?

1572
17 марта '11 в 20:47 2011-03-17 20:47 „Zepplock“ yra nustatytas kovo 17 d. 11 val. 20:47 2011-03-17 20:47
@ 24 atsakymai

Git versija 1.7.9 ir vėlesnė versija

Kadangi „Git“ yra 1.7.9 (išleista 2012 m. Sausio mėn. Pabaigoje), „Git“ turi tvarkingą mechanizmą, kad būtų išvengta būtinybės nuolat įvesti HTTP / HTTPS slaptažodį, vadinamą kredencialų pagalba . ( Dazonic dėkojame, kad pastebėjote šią naują funkciją toliau pateiktose pastabose.)

Naudodami „Git 1.7.9“ arba naujesnę versiją, galite tiesiog naudoti vieną iš šių įgaliojimų pagalbininkų:

 git config --global credential.helper cache 

... kuris nurodo „Git“ išsaugoti savo slaptažodį atmintyje talpykloje (pagal numatytuosius nustatymus) 15 minučių. Galite nustatyti ilgesnį laiką su:

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

(Šis pavyzdys buvo pasiūlytas „GitHub“ pagalbos puslapyje „Linux“ .) Taip pat galite išsaugoti savo įgaliojimus visam laikui, jei reikia, žr. Kitus atsakymus žemiau.

„GitHub“ pagalba taip pat rodo, kad jei naudojate „Mac OS X“ ir naudojate „ Homebrew“, kad įdiegtumėte „Git“, galite naudoti savo „Mac OS X“ saugyklą su:

 git config --global credential.helper osxkeychain 

„Windows“ sistemoje yra „ Git Helper Credential Manager for Windows“ arba „ Wincred“ sistemoje „msysgit“ .

 git config --global credential.helper wincred # obsolete 

Naudojant „ Git“, skirtą „Windows 2.7.3+“ (2016 m. Kovo mėn.):

 git config --global credential.helper manager 

„Linux“ galite naudoti „ gnome-keyring (arba kitą „KWallet“ gnome-keyring įgyvendinimą).

Git versijos iki 1.7.9

„Git“ versijose iki 1.7.9 versijos ši saugesnė parinktis nepasiekiama, ir turėsite pakeisti tuščios origin URL, į kurį norite įtraukti tokį slaptažodį:

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

... kitaip tariant, su :password po naudotojo vardo ir prieš @ .

Galite nustatyti naują nuotolinės origin URL adresą:

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

Įsitikinkite, kad naudojate https , ir turėtumėte žinoti, kad jei tai padarysite, jūsų GitHub slaptažodis bus saugomas teksto redaktoriuje .git kataloge, kuris yra akivaizdžiai nepageidaujamas.

Su bet kokia „Git“ versija (gerai, nuo 0.99 versijos)

Alternatyvus būdas yra įvesti savo vartotojo vardą ir slaptažodį į savo ~/.netrc , nors, kaip ir išsaugant slaptažodį nuotoliniu URL, tai reiškia, kad jūsų slaptažodis bus įrašytas į diską paprastu tekstu, todėl bus mažiau saugus ir nerekomenduojamas. Tačiau, jei norite taikyti šį metodą, pridėkite šią eilutę į ~/.netrc :

 machine <hostname> login <username> password <password> 

... <hostname> pakeičiant <hostname> pavadinimą ir <username> ir <password> su jūsų vartotojo vardu ir slaptažodžiu. Taip pat nepamirškite nustatyti failų sistemos apribojimų šiame faile:

 chmod 600 ~/.netrc 

Atminkite, kad sistemoje „Windows“ šis failas turi būti vadinamas _netrc , todėl gali tekti apibrėžti aplinkos kintamąjį% HOME% - daugiau informacijos žr.

2078 m
17 марта '11 в 20:54 2011-03-17 20:54 atsakymą pateikė Markas Longairas kovo 17 d. 11 val. 20:54 2011-03-17 20:54

Taip pat galite turėti „Git“ savo kredencialus nuolat naudodami šiuos veiksmus:

 git config credential.helper store 

Pastaba Nors tai yra patogu, „Git“ išsaugos jūsų kredencialus kaip paprastą tekstą vietiniame faile (.git-credentials) jūsų projekto kataloge (žr. Toliau pateiktą „namų“ katalogą). Jei jums nepatinka, ištrinkite šį failą ir pereikite prie talpyklos.

Jei norite, kad „Git“ tęstųsi, paprašykite jūsų įgaliojimų kiekvieną kartą, kai reikia prisijungti prie nuotolinio saugyklos, galite paleisti šią komandą:

 git config --unset credential.helper 

Jei norite išsaugoti .git-credentials slaptažodžius %HOME% kataloge, o ne projekto kataloge: naudokite „ --global žymę

 git config --global credential.helper store 
615
03 сент. Giri Alwar atsakymas 03 Sep. 2012-09-03 04:14 '12 at 4:14 2012-09-03 04:14

TL; DR; Naudokite šifruotą netrc failą su Git 1.8.3 + .

„Git HTTPS“ saugyklos URL slaptažodžių saugojimas galimas naudojant „ ~/.netrc („Unix“) arba %HOME%/_netrc (pastaba _ ).

Bet : šis failas išsaugos jūsų slaptažodį paprastu tekstu.

Sprendimas . Šifruokite šį failą su GPG (GNU privatumo apsauga) ir padarykite „Git“ iššifruoti jį kiekvienam ( push / pull / fetch / clone ).


Sistemos „Windows“ instrukcijos

„Windows“ sistemoje:

(„Git“ turi gpg.exe “, tačiau naudojant visą GPG diegimą yra gpg-agent.exe , kuris prisimena jūsų slaptafrazę, susijusią su jūsų GPG klavišu.)

  • Įdiekite gpg4Win Lite , minimalią gnupg komandinės eilutės sąsają (paimkite naujausią gpg4win-vanilla-2.XY-betaZZ.exe ) ir užpildykite PATH su GPG diegimo kataloge:

     gpgp --import aKey # or gpg --gen-key 

(Nepamirškite į šį raktą įdėti slaptafrazės.)

  • Pasitikėkite šiuo raktu

  • Įdiekite scenarijaus akreditavimo pagalbininką į katalogą, esančią %PATH% :

     machine a_server.corp.com login a_login password a_password protocol https machine a_server2.corp.com login a_login2 password a_password2 protocol https 

(Nepamirškite „ protocol “ dalies: „ http “ arba „ https “, priklausomai nuo naudojamo URL.

  • Šifruoti šį failą:

     git config --local credential.helper "netrc -f C:/path/to/_netrc.gpg -v" 

(Atkreipkite dėmesį, kad „ / “: C:\path\to... bus neveikia.) (Pirmiausia galite naudoti „ -v -d kad sužinotumėte, kas vyksta.)

Nuo to momento bet kuri Git komanda, kuri naudoja HTTP (S) URL, kuriam reikalingas autentifikavimas, iššifruoja šį _netrc.gpg failą ir naudoja prisijungimo vardą / slaptažodį, susietą su serveriu, su kuriuo susisiekiate. Pirmą kartą „GPG“ paprašys įvesti pagrindinę GPG rakto frazę, kad iššifruotumėte failą. Kitais atvejais gpg-agentas , automatiškai paleidęs ant pirmosios GPG skambučio, suteiks jums šią frazę.

Taigi, viename faile galite įsiminti kelis URL / prisijungimus / slaptažodžius ir saugoti juos diske šifruotu pavidalu.
Manau, kad tai patogiau nei „talpyklų asistentas“, kur jums reikia prisiminti ir įvesti (vieną kartą per sesiją) skirtingą slaptažodį kiekvienai iš jūsų nuotolinių paslaugų, nes nurodytas slaptažodis bus išsaugotas atmintyje.

77
21 авг. atsakymas pateikiamas VonC 21 rug . 2013-08-21 18:48 '13, 18:48, 2013-08-21 18:48

Yra paprastas, senamadiškas būdas išsaugoti vartotojo kredencialus HTTPS URL:

 https://user:password@github.com/... 

URL galite pakeisti naudodami git remote set-url <remote-repo> <URL>

Akivaizdus šio požiūrio trūkumas yra tas, kad turite saugoti slaptažodį paprastu tekstu. Jūs vis dar galite įvesti savo naudotojo vardą ( https://user@github.com/... ), kuris bent jau jus išgelbės nuo vargo.

Galite persijungti į SSH arba naudoti „GitHub“ kliento programinę įrangą.

32
06 янв. Atsakymas pateikiamas sausio 06 d 2014-01-06 19:43 '14, 19:43, 2014-01-06 19:43

Naudokite kredencialų saugojimą.

Naudojant git 2.11+ OSX ir Linux sistemose , naudokite integruotą „git“ saugyklą

 git config --global credential.helper libsecret 

Naudojant „msysgit 1.7.9+“ sistemoje „ Windows“ :

 git config --global credential.helper wincred 

Jei naudojate 1.7.9+ gitą OS X sistemoje, naudokite:

 git config --global credential.helper osxkeychain 
28
09 сент. atsakymas pateikiamas roo2 09 sep . 2015-09-09 06:57 '15 at 6:57 2015-09-09 06:57

Galite tiesiog naudoti

 git config credential.helper store 

Kitą kartą įvedus slaptažodį paspaudus arba spustelėjus, jis bus išsaugotas .git-credentials kaip paprastas tekstas (šiek tiek nesaugus, bet tiesiog įdėkite jį į saugų aplanką)

Ir tai, kaip nurodyta šiame puslapyje:

https://git-scm.com/docs/git-credential-store

25
21 сент. atsakymas pateikiamas sgoran 21 sep . 2016-09-21 16:03 '16, 16:03 pm 2016-09-21 16:03

Tikriausiai šiek tiek sulėtėjau, bet man iš karto nėra aišku, kad pirmiausia turiu atsisiųsti pagalbininką! „ Atlassian“ kreditoriaus sąskaitą rado nuolatinis autentifikavimas naudojant „Git“ saugyklas , tikiuosi, kad tai padės.

Citata:

Atlikite šiuos veiksmus, jei norite naudoti „Git“ su kredencialų talpykla OSX:

Atsisiųskite dvejetainį git -redential-osxkeychain.

Paleiskite šią komandą, kad patikrintumėte, ar vykdomasis failas yra dvejetainis:

 chmod a+x git-credential-osxkeychain 

Įdėkite jį į / usr / local / bin katalogą.

Paleiskite šią komandą:

 git config --global credential.helper osxkeychain 
18
05 окт. atsakymas duotas Ben Oct 05. 2012-10-05 08:31 '12 8:31 am 2012-10-05 08:31

Tiesiog įveskite URL prisijungimo duomenis:

 git remote rm origin git remote add origin https://username:mypassword@github.com/path/to/repo.git 
15
03 июля '14 в 10:13 2014-07-03 10:13 atsakymą pateikė Tarun Gupta liepos 03 d. 14, 10:13 2014-07-03 10:13

GNU / Linux nustatymuose ~ / .netrc taip pat veikia gerai:

 $ cat ~/.netrc machine github.com login lot105 password howsyafather 

Tai gali priklausyti nuo to, kuri „Git“ tinklo biblioteka naudojama HTTPS transportavimui.

15
05 дек. Atsakymą pateikė helloPiers 05 Dec. 2012-12-05 16:28 '12 16:28 2012-12-05 16:28

„Windows“ sistemoje galite naudoti „ Git Credential Manager“ (GCM) papildinį. Šiuo metu ją palaiko „Microsoft“. Geriausia tai, kad ji saugo slaptažodį „Windows“ duomenų saugykloje, o ne kaip paprastą tekstą.

Puslapyje rodomas diegimo programa> projektas . Taip pat bus įdiegta oficialaus „ git-windows“ versija naudojant integruotą patikimumo tvarkyklę. Tai leidžia dviejų faktorių autentifikavimą github (ir kitiems serveriams). Ir turi grafinę sąsają pradiniam prisijungimui.

Cygwin vartotojams (arba vartotojams, jau naudojantiems oficialius „git“ >leidinių . Ištraukite paketą, tada paleiskite install.cmd . Tai bus įdiegta ~/bin . (Įsitikinkite, kad jūsų ~/bin yra jūsų PATH.) Tada jį sukonfigūruokite naudodami šią komandą:

 git config --global credential.helper manager 

„Git“ atliks git-credential-manager.exe kai bus autentifikuotas bet kuriame serveryje.

12
24 мая '14 в 10:49 2014-05-24 10:49 atsakymas pateikiamas Nadeem Khedr gegužės 24 d. 14, 10:49 2014-05-24 10:49

Jei nenorite išsaugoti slaptažodžio aiškiame tekste, pvz., Kaip pažymėjo „Mark“, galite naudoti skirtingą „github“ URL, kurį norite gauti, nei stumti. Konfigūracijos faile, [remote "origin"] :

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

Jis vis tiek prašys slaptažodžio, kai jis spustelės, bet ne tada, kai jis bus išgautas, bent jau atviro kodo projektams.

11
19 марта '11 в 11:12 2011-03-19 11:12 atsakymą pateikė MatrixFrog kovo 19 d. 11 val. 11:12 2011-03-19 11:12

Galite naudoti kredencialų pagalbininkus.

8
27 марта '13 в 19:23 2013-03-27 19:23 atsakymas suteiktas Charanui kovo 27 d. 13 val. 19:23 2013-03-27 19:23

Oauth

Galite sukurti savo asmeninį žetonų API ( OAuth ) ir naudoti jį taip pat, kaip ir įprastinius įgaliojimus (šiuo adresu: /settings/tokens ). Pavyzdžiui:

 git remote add fork https://4UTHT0KEN@github.com/foo/bar git push fork 

.netrc

Kitas būdas yra, pavyzdžiui, naudoti savo vartotojo / slaptažodį ~/.netrc ( _netrc sistemoje „Windows“)

 machine github.com login USERNAME password PASSWORD 

Https:

 machine github.com login USERNAME password PASSWORD protocol https 

įgaliotinis

Jei norite išsaugoti „GitHub“ slaptažodį „Git“ naudojant „HTTPS“, galite naudoti kredencialų asistentą, norėdami pasakyti „Git“ prisiminti „GitHub“ naudotojo vardą ir slaptažodį kiekvieną kartą, kai kalbama su „GitHub“.

  • „Mac“: „ git config --global credential.helper osxkeychain ( osxkeychain helper )
  • Windows: git config --global credential.helper wincred
  • Linux ir kiti: git config --global credential.helper cache

temoje:

6
20 июня '16 в 1:44 2016-06-20 01:44 atsakymas suteikiamas kenorbui birželio 20 d. 16 val. 1:44 2016-06-20 01:44

repo/.git/config repo galite redaguoti repo/.git/config ir pridėti tam tikrą konfigūraciją, kaip parodyta žemiau:

 [user] name = you_name password = you_password [credential] helper = store 

Tada nebebusite paraginti įvesti username ir password .

6
05 янв. Xiaorong Liao atsakymas 05 Jan 2017-01-05 12:42 '17 at 12:42 2017-01-05 12:42

Vietoj paskyros slaptažodžio naudokite autentifikavimo raktą. Eikite į „GitHub“ nustatymus / programas ir sukurkite prieigos raktą. Žymeklį galima naudoti taip pat, kaip ir slaptažodį.

Ženklas sukurtas taip, kad vartotojai negalėtų naudoti paskyros slaptažodžio, kad galėtų dirbti su projektu. Naudodami administravimą naudokite tik slaptažodį, pvz., Kurdami naujus žetonus arba panaikindami senus žymas.


Vietoj simbolio ar slaptažodžio, suteikiančio vartotojui visišką prieigą prie „GitHub“ paskyros, specialus projekto diegimo raktas gali būti naudojamas prieigai prie vieno projekto saugyklos. Git projektas gali būti sukonfigūruotas naudoti šį kitą raktą šiais veiksmais, kai vis tiek galite naudotis kitomis „Git“ paskyromis ar projektais, turinčiais įprastinius kredencialus:

  • Parašykite SSH konfigūracijos failą, kuriame yra Host raktas, galbūt „ UserKnownHostsFile ir galbūt „ User (nors manau, kad to nereikia).
  • Parašykite SSH scenarijaus apvalkalą, kuris faktiškai yra lygus ssh -F /path/to/your/config $*
  • Pasiruoškite „ GIT_SSH=/path/to/your/wrapper “ prieš įprastą „Git“ komandą. Čia git remote (origin) turi naudoti git@github.com:user/project.git formatą git@github.com:user/project.git .
5
04 июня '14 в 17:31 2014-06-04 17:31 atsakymą, kurį atsakė minghua , birželio 14 d. 14 d., 17:31 2014-06-04 17:31

Viskas šiek tiek skiriasi, jei naudojate dviejų veiksnių autentifikavimą , kaip aš. Kadangi niekur kitur neradau gero atsakymo, pasiliksiu čia, kad galbūt galėčiau jį rasti vėliau.

Jei naudojate dviejų veiksnių autentifikavimą, tada naudotojo vardo ir slaptažodžio nurodymas net neveiks - gausite atsisakymą suteikti prieigą. Tačiau galite naudoti programos prieigos raktą ir naudoti „Git“ įgaliojimų asistentą talpyklai. Čia pateikiamos nuorodos:

Ir aš neprisimenu, kur aš tai pamačiau, bet kai prašoma pateikti naudotojo vardą, kur pridedate programos prieigos raktą. Tada palikite slaptažodį tuščią. Jis dirbo mano „Mac“.

4
25 сент. Atsakymą pateikė JnBrymn 25 rugsėjis 2014-09-25 22:46 '14, 10:46 pm 2014-09-25 22:46

Žinau, kad tai nėra saugus sprendimas, tačiau kartais jums reikia paprasto sprendimo - nenaudojant nieko kito. Ir kadangi pagalbininkas = parduotuvė man neveikė, sukūriau pagalbininką:

Sukurkite scenarijų a ir įdėkite jį į naudotojo dėžės aplanką, čia su pavadinimu „ kreditas“ , šis scenarijus suteiks naudotojo vardą ir slaptažodį:

 #!/bin/bash while read line do echo "$line" done < "/dev/stdin" echo username=mahuser echo password=MahSecret12345 

padaryti tai įmanoma:

 chmod u+x /home/mahuser/bin/credfake 

tada sukonfigūruokite jį git:

 git config --global credential.helper /home/mahuser/bin/credfake 

(arba naudokite jį be -global tik vienam repo)

ir - voilá - git naudos šį naudotoją + slaptažodį.

3
27 мая '17 в 14:26 2017-05-27 14:26 atsakymas į „ bebbo“ pateikiamas gegužės 27 d. 17 d. 14:26

Geriau naudoti saugumo kredencialus, tačiau jį galite išsaugoti tam tikrą laiką naudodami talpyklą

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

Jūsų kredencialai bus išsaugoti 3600 sekundžių.

3
17 июля '14 в 13:18 2014-07-17 13:18 atsakymą pateikė Sarvar Nishonboyev , liepos 17 d. 14, 13:18 2014-07-17 13:18

Jis veikia man. Naudoju „Windows 10“

 git config --global credential.helper wincred 
2
02 июля '16 в 22:05 2016-07-02 22:05 Atsakymą pateikė Mostafa Nawara liepos 2 d. 16 d. 10:05 2016-07-02 22:05

Turite atsakymą iš gitcredentials (7) rankinio puslapio . Mano atveju neturiu kredencinės talpyklos „Windows“ diegime; Naudoju kredencialų saugojimą.

Naudojant kredencialų saugyklą, vartotojo vardas / slaptažodis yra saugomi [vartotojo aplanke] / faile. „git-credentials“. Jei norite pašalinti naudotojo vardą / slaptažodį, tiesiog ištrinkite failo turinį.

2
27 янв. Mike Lin atsakymas sausio 27 d 2014-01-27 21:45 '14, 21:45 2014-01-27 21:45

Paprastai turite nutolusį kažką panašaus URL,

 git remote -v origin https://gitlab.com/username/Repo.git (fetch) origin https://gitlab.com/username/Repo.git (push) 

jei norite praleisti naudotojo vardą ir slaptažodį, kai naudojate „git push“, pabandykite

  git remote set-url origin https://username:password@gitlab.com/username/Repo.git 

Aš ką tik pridėjau tą patį URL (su vartotojo informacija, įskaitant slaptažodį) iki pat pradžių.

PASTABA. Tai neveikia, jei naudotojo vardas yra el. Pašto identifikatorius.

 git remote -v origin https://username:password@gitlab.com/username/Repo.git (fetch) origin https://username:password@gitlab.com/username/Repo.git (push) 
1
15 дек. Atsakymą pateikė Nayagam, gruodžio 15 d. 2017-12-15 11:36 '17 at 11:36 2017-12-15 11:36

Taip pat redaguojate „ bashrc“ failą ir į jį įtraukiate scenarijų. Tai bus paprašyti slaptažodžio, kai paleisite „Git“ vieną kartą, ir tada prisiminkite jį prieš išjungdami.

 SSH_ENV=$HOME/.ssh/environment # start the ssh-agent function start_agent {echo "Initializing new SSH agent..."# spawn ssh-agent/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"echo succeededchmod 600 "${SSH_ENV}". "${SSH_ENV}" > /dev/null/usr/bin/ssh-add } if [ -f "${SSH_ENV}" ]; then. "${SSH_ENV}" > /dev/null  ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {  start_agent;  } elsestart_agent; fi 
1
14 июля '16 в 21:02 2016-07-14 21:02 atsakymą pateikė A-patel-guy, liepos 14 d., 16 d., 21:02, 2016-07-14 21:02

Kompozitoriaus dokumentuose nurodoma , kad galite sustabdyti jos naudojimąsi „GitHub API“, kad veiktų kaip git clone :

Jei „GitHub“ saugykloje nustatysite „ no-api raktą true , jis klonuos saugyklą, kaip ir bet kurioje kitoje „Git“ saugykloje, o ne naudojant „GitHub“ API. Tačiau, skirtingai nei naudojant „ git tvarkyklę, kompozitorius vis dar bandys naudoti „GitHub“ zip failus.

Taigi, šis skyrius atrodys taip:

 "repositories": [ { "type": "vcs", "no-api": true, "url": "https://github.com/your/repo" } ], 

Atminkite, kad API egzistuoja dėl tam tikrų priežasčių. Taigi, tai turėtų būti paskutinis būdas padidinti github.com apkrovą.

1
05 июня '14 в 18:09 2014-06-05 18:09 atsakymas, duotas sebastianwagner, birželio 05, 14, 18:09 2014-06-05 18:09
  • Jei jau turite projektų:

    • eikite į your/project/path/.git/config . Atidarykite. Ir pakeiskite URL, pvz., url = https://username@github.com/project.git į: url = https://username:password@github.com/project.git
    • Arba tiesiog paleiskite šias komandas kaip savo projektą:
      git remote rm origin
      git remote add origin https://username:password@github.com/project.git
  • Jei klonuojate naują projektą:
    git clone https://username:password@github.com/project.git

  • Prisijunkite prie esamos saugyklos:
    git remote add origin https://username:password@github.com/project.git
0
08 апр. atsakymas pateikiamas waLL e 08 apr. 2018-04-08 09:15 '18, 9:15 am 2018-04-08 09:15

Kiti klausimai apie „ žymes arba „ Užduoti klausimą“