Pytanie Czy istnieje sposób na pomijanie pisania na klawiaturze podczas korzystania z https: // na GitHub?


Niedawno przełączyłem się na synchronizację moich repozytoriów z https: // na GitHub (z powodu problemów z firewallem) i za każdym razem prosi o podanie hasła. Kiedyś było tak, że miałem SSH certyfikat i to wystarczyło. Czy istnieje sposób na ominięcie hasła w moim przypadku (przy użyciu http / https)?


1623
2018-03-17 17:47


pochodzenie


Zobacz też superuser.com/questions/199507/... - Colonel Panic
Teraz możesz użyć pomocnika poświadczeń do szyfrowania _netrc plik zawierający twoje poświadczenia. Widzieć moja odpowiedź poniżej. Stwierdziłem, że to bezpieczniejsze niż git-credential-winstore.exe (pamięć podręczna), która jest nieco błędna w systemie Windows. - VonC
Zobacz też Git push wymaga nazwy użytkownika i hasła i Git wciąż prosi mnie o podanie hasła.
git-credential-winstore pracował najlepiej dla systemu Windows. Co jest wadliwe? Konfigurowanie ssh jest preferowaną opcją, chociaż zrobiłem to kilka razy, jest to o wiele bardziej podatne na błędy, a czasami po prostu nie działa, gdy trzeba połączyć się z wieloma hostami. - Bron Davies
Przez "certyfikat SSH" zakładam, że masz na myśli "klucz prywatny SSH". - Michael Mior


Odpowiedzi:


Z Git w wersji 1.7.9 i nowszych

Od Git 1.7.9 (wydany pod koniec stycznia 2012 r.), W Git znajduje się zgrabny mechanizm, aby uniknąć konieczności wpisywania hasła przez cały czas dla HTTP / HTTPS, nazywanego pomocników poświadczających. (Dzięki dazonowy za wskazanie tej nowej funkcji w komentarzach poniżej.)

Z Git 1.7.9 lub nowszym możesz po prostu użyć jednego z następujących pomocników poświadczeń:

git config --global credential.helper cache

... co mówi Gitowi, aby przechowywane hasło było przechowywane w pamięci przez (domyślnie) 15 minut. Możesz ustawić dłuższy limit czasu za pomocą:

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

(Ten przykład został zasugerowany w Strona pomocy GitHub dla systemu Linux.) Możesz także przechowywać swoje poświadczenia na stałe, jeśli chcesz, zobacz inne odpowiedzi poniżej.

Pomoc GitHub również sugeruje że jeśli używasz Mac OS X i używasz Homebrew aby zainstalować Git, możesz użyć macierzystego magazynu kluczy Mac OS X z:

git config --global credential.helper osxkeychain

W systemie Windows jest wywoływany helper Git Credential Manager dla systemu Windows lub wincred w msysgit.

git config --global credential.helper wincred # obsolete

Z Git dla systemu Windows w wersji 2.7.3 lub nowszej (Marzec 2016):

git config --global credential.helper manager

Dla systemu Linux możesz posługiwać się gnome-keyring(lub inne implementacje kluczy, takie jak KWallet).

Z wersjami Git przed 1.7.9

W wersjach Git wcześniejszych niż 1.7.9 ta bezpieczniejsza opcja nie jest dostępna i musisz zmienić adres URL origin zdalne używa w celu włączenia hasła w ten sposób:

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

... innymi słowy z :password po nazwie użytkownika i przed @.

Możesz ustawić nowy adres URL swojego origin zdalne z:

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

Upewnij się, że używasz https i powinieneś być świadomy, że jeśli to zrobisz, twoje hasło GitHub będzie przechowywane w postaci zwykłego tekstu .git katalog, który jest oczywiście niepożądany.

Z dowolną wersją Git (no, od wersji 0.99)

Alternatywnym podejściem jest umieszczenie swojej nazwy użytkownika i hasła w swoim ~/.netrc plik, chociaż tak jak w przypadku przechowywania hasła w zdalnym adresie URL, oznacza to, że twoje hasło będzie przechowywane na dysku w postaci zwykłego tekstu, a zatem będzie mniej bezpieczne i niezalecane. Jeśli jednak chcesz zastosować takie podejście, dodaj następujący wiersz do swojego ~/.netrc:

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

... zastępując <hostname> z nazwą hosta serwera, i <username> i <password> ze swoją nazwą użytkownika i hasłem. Pamiętaj także, aby ustawić restrykcyjne uprawnienia systemu plików dla tego pliku:

chmod 600 ~/.netrc

Zauważ, że w Windows ten plik powinien zostać wywołany _netrci może być konieczne zdefiniowanie zmiennej środowiskowej% HOME% - więcej szczegółów można znaleźć w:


2136
2018-03-17 17:54



Nie przechowuj hasła w postaci zwykłego tekstu. Od wersji Git 1.7.9 możesz używać pomocników poświadczeń. git config --global credential.helper osxkeychainna OS X. Dla innego systemu operacyjnego patrz help.github.com/articles/set-up-git - dazonic
FWIW, breloczek osx jest częścią podstawowego kodu źródłowego GIT, nie jest wyłącznym komponentem Brew lub MacPorts ani cokolwiek smaku miesiąca. I nie musisz nawet budować git od zera - po prostu cd contrib / credential / osxkeychain / i uruchom make. - synthesizerpatel
Przy uwierzytelnianiu dwuskładnikowym musisz użyć tego, co github nazywa a Token dostępu osoby. W rzeczywistości zawsze powinieneś używać jednego, ponieważ w przeciwieństwie do hasła możesz kontrolować, jaki dostęp daje. Po prostu zastąp hasło w adresie URL, aby zakończyć https://username:PERSONAL_ACCESS_TOKEN@github.com/username/project.git. Dzięki niemu hasła tekstowe przechowywane na dysku są prawie bezpieczne. - Russell Stuart
git config --global credential.helper cache nie działa w systemie Windows: stackoverflow.com/questions/11693074/... posługiwać się Gitcredentialstore w systemie Windows bądź szczęśliwy - Sebastian J.
W jaki sposób ustawić ten limit czasu na nieskończoność? - sudo


Możesz również Git przechowywać swoje dane uwierzytelniające na stałe za pomocą:

git config credential.helper store

Uwaga: chociaż jest to wygodne, Git będzie zapisywać twoje poświadczenia w czystym tekście lokalny plik (.git-credentials) w twoim katalogu projektu (patrz poniżej dla katalogu "home"). Jeśli ci się to nie podoba, usuń ten plik i przełącz się do używania opcja pamięci podręcznej.

Jeśli chcesz, aby Git wznowił zapytanie o dane uwierzytelniające za każdym razem, gdy jest to konieczne połączyć się ze zdalnym repozytorium, możesz uruchomić tę komendę:

git config --unset credential.helper

Aby przechowywać hasła w .git-credentials w Twoim %HOME% katalog w przeciwieństwie do katalogu projektu: użyj --global flaga

git config --global credential.helper store

639
2017-09-03 01:14



W systemie Windows możesz pobrać narzędzie pomocnicze konfigurujące rzeczy do przechowywania zaszyfrowanej wersji swojego hasła GIT w Windows Creditial Store, zobacz confluence.atlassian.com/display/STASH/... - Contango
Zauważyłem, że muszę określić --global lub spróbuje zapisać ustawienia w bieżącym repozytorium: git config --global credential.helper store - Brian Gordon
Dlaczego miałbyś robić pamięć podręczną zamiast przechowywać na stałe? Udostępnianie komputerów czy coś takiego? - Michael J. Calkins
@BrianGordon Używam GIT 1.9.5 w systemie Windows, i --global flaga była zbędna. Nawet bez tej flagi został utworzony plik danych uwierzytelniających %USER_HOME% informator. - jFrenetic
jeśli nie przechowujesz w postaci zwykłego tekstu, co jest chronione? Twoje hasło? Czy nie musiałbyś prosić cię o hasło administratora, kiedy łączysz się z git? Czy nie ma potrzeby wprowadzania hasła, aby inne hasło było trochę dziwne? - Cruncher


TLDR; Użyj zaszyfrowany plik Netrc z Git 1.8.3+.

Zapisywanie hasła dla repozytorium Git Adres URL HTTPS jest możliwy za pomocą ~/.netrc (Unix) lub %HOME%/_netrc (zanotuj _) w systemie Windows.

Ale: Ten plik będzie przechowywać twoje hasło w postaci zwykłego tekstu.

Rozwiązanie: Zaszyfruj ten plik przy pomocy GPG (ochrona prywatności GNU)i spraw, aby Git odszyfrowywał go za każdym razem, gdy potrzebuje hasła (dla push/pull/fetch/clone operacja).


Uwaga: dzięki Git 2.18 (Q2 2018) możesz teraz dostosować GPG do deszyfrowania zaszyfrowanych .netrc plik.

Widzieć Zatwierdź 786ef50, zatwierdzić f07eeed (12 maja 2018) przez Luis Marsano (``).
(Scalone przez Junio ​​C Hamano - gitster - w Zatwierdź 017b7c5, 30 maja 2018 r.) 

git-credential-netrc: zaakceptować gpg opcja

git-credential-netrc zostało zakodowane na stałe w celu odszyfrowania za pomocą 'gpg' niezależnie od tego   opcja gpg.program.
  Jest to problem w dystrybucji takiej jak Debian, która nazywa nowoczesne GnuPG czymś innym, np. "gpg2"


Instrukcje krok po kroku dla systemu Windows

W systemie Windows:

(Git ma gpg.exe w dystrybucji, ale korzystanie z pełnej instalacji GPG obejmuje gpg-agent.exe, który zapamięta twoje hasło powiązane z Twoim kluczem GPG.)

  • zainstalować gpg4Win Lite, minimalny interfejs wiersza polecenia gnupg (weź najnowszy gpg4win-vanilla-2.X.Y-betaZZ.exe) i uzupełnij swoją ścieżkę PATH w katalogu instalacyjnym GPG:

    set PATH=%PATH%:C:\path\to\gpg
    copy C:\path\to\gpg\gpg2.exe C:\path\to\gpg\gpg.exe
    

(Zanotuj 'copy'command: Git będzie potrzebował skryptu Bash do wykonania polecenia'gpg". Od gpg4win-vanilla-2 przychodzi z gpg2.exe, musisz go zduplikować.)

  • Utwórz lub importuj klucz GPG i zaufaj mu:

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

(Upewnij się, że wpisałeś hasło do tego klucza.)

  • Zaufaj temu kluczu

  • Zainstaluj skrypt pomocniczy poświadczeń w katalogu w swoim %PATH%:

    cd c:\a\fodler\in\your\path
    curl -o c:\prgs\bin\git-credential-netrc https://raw.githubusercontent.com/git/git/master/contrib/credential/netrc/git-credential-netrc
    

(Tak, to jest skrypt Bash, ale będzie działał w systemie Windows, ponieważ będzie wywoływany przez Git.)

  • Utwórz plik _netrc w czystym tekście

    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
    

(Nie zapomnij o 'protocol"część:"http"lub"https"w zależności od adresu URL, z którego będziesz korzystać.)

  • Zaszyfruj ten plik:

    gpg -e -r a_recipient _netrc
    

(Teraz możesz kasować  _netrc plik, zachowując tylko _netrc.gpg zaszyfrowany.)

  • Użyj tego zaszyfrowanego pliku:

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

(Zanotuj '/": C:\path\to... w ogóle nie działał.) (Możesz użyć na początku -v -d aby zobaczyć, co się dzieje.)

Od tego momentu każda komenda Git używająca adresu URL HTTP (S), który wymaga uwierzytelnienia, odszyfruje to _netrc.gpgplik i użyj loginu / hasła powiązanego z serwerem, z którym się kontaktujesz. Za pierwszym razem GPG poprosi Cię o podanie hasła klucza GPG, aby odszyfrować plik. W innym czasie, gpg-agent uruchamiany automatycznie przez pierwsze wezwanie GPG dostarczy ci to hasło.

W ten sposób możesz zapamiętać kilka Adresy URL / loginy / hasła w jednym pliku i przechowuj je na dysku zaszyfrowanym.
Uważam, że jest to wygodniejsze niż pomocnik "pamięci podręcznej", w którym należy zapamiętać i wpisać (raz na sesję) inne hasło dla każdej usługi zdalnej, aby wspomniane hasło było przechowywane w pamięci podręcznej.


85
2017-08-21 15:48



próbuje tego samego na Linuksie .. git config --local credential.helper "netrc -f /home/me/.netrc.gpg -v -d" ..i dostaję "git:" credential-netrc "nie jest Polecenie git zobacz "git --help" " - sunny
@sunny Tak właśnie jest curl -o c:\prgs\bin\git-credential-netrc https://raw.github.com/git/git/master/contrib/credential/netrc/git-credential-netrc jest dla: musisz skopiować git-credential-netrc w dowolnym miejscu na twojej drodze ($PATH), aby git mógł zadzwonić "credential-netrc". - VonC
Dzięki, że to przegapiłem. - sunny
Więc to _netrc nie działa dla mnie na Windows 7 PC, ale .netrc Pracował dla youtube-dl z --netrc argument przekazany do niego. - Iulian Onofrei
Najlepsze rozwiązanie, powinno na górze. - Doug713705


Istnieje prosty, staromodny sposób przechowywania poświadczeń użytkownika w adresie URL HTTPS:

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

Możesz zmienić adres URL za pomocą git remote set-url <remote-repo> <URL>

Oczywistym minusem tego podejścia jest to, że hasło należy przechowywać w postaci zwykłego tekstu. Nadal możesz po prostu wpisać nazwę użytkownika (https://user@github.com/...), co przynajmniej zaoszczędzi ci połowę kłopotów.

Możesz przełączyć się na SSH lub użyć oprogramowania klienckiego GitHub.


32
2018-01-06 16:43



Nazwa użytkownika / hasło może wymagać zakodowania, zobacz stackoverflow.com/a/34611311/3906760 - MrTux


Użyj magazynu danych logowania.

Dla git 2.11+ na OSX i linux, użyj wbudowanego magazynu referencyjnego git:

git config --global credential.helper libsecret

Dla msysgit 1.7.9+ na Windows:

git config --global credential.helper wincred

Dla Git 1.7.9+ na OS X użyj:

git config --global credential.helper osxkeychain

30
2017-09-09 03:57



Jestem pewien, że to jest droga, ale mam smutny błąd: git: 'credential-gnome-keyring' is not a git command. See 'git --help'. - codepleb
Dzięki, ale jakoś mam ten sam błąd. czy robię coś źle? Piszę polecenie i nic się nie dzieje. Jak tylko popchnę, zostaniesz poproszony o poświadczenia, które z powodzeniem wstawiam, ale dostaję błąd, że po tym nie jest to polecenie git. - codepleb
Zanim libsecret zadziała w systemie Linux, musisz wykonać następujące kroki: stackoverflow.com/a/40312117/775800 - Lavamantis
Jeszcze jedno - jeśli masz włączone 2FA na Githubie, twoje hasło nie zadziała. Ale możesz utworzyć osobisty token dostępu na swojej stronie "Ustawienia" Githuba, a token działa jako twoje hasło. github.com/github/hub/issues/822 - Lavamantis
credential-libsecret 'nie jest poleceniem git - Siddharth


Możesz po prostu użyć

git config credential.helper store

Po kolejnym wprowadzeniu hasła przy użyciu polecenia "pull" lub "push" zostanie ono zapisane .git-credentials jako zwykły tekst (trochę niezabezpieczony, ale po prostu umieść go w chronionym folderze)

I to wszystko, jak podano na tej stronie:

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


30
2017-09-21 13:03



Dla Git dla Windows 2.7.3 (marzec 2016): github.com/git-for-windows/git/releases?after=v2.8.4.windows.1to by było git config credential.helper manager zamiast - VonC
Tak brzmi odpowiedź, która w rzeczywistości odpowiada na pytanie PO - Climax


Prawdopodobnie jestem trochę powolny, ale nie było dla mnie oczywiste, że najpierw muszę pobrać pomocnika! Znalazłem credential.helper pobrać na Atlassian Trwale uwierzytelnia się z repozytoriami Git, mam nadzieję, że to pomoże.

Zacytować:

Wykonaj następujące kroki, jeśli chcesz używać Git z buforowaniem poświadczeń w OSX:

Pobierz plik binarny git-credential-osxkeychain.

Uruchom poniższe polecenie, aby upewnić się, że plik binarny jest wykonywany:

chmod a+x git-credential-osxkeychain

Umieść go w katalogu / usr / local / bin.

Uruchom poniższe polecenie:

git config --global credential.helper osxkeychain

18
2017-10-05 05:31





W konfiguracji GNU / Linux ~ / .netrc działa również całkiem dobrze:

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

Może to zależeć od tego, z których bibliotek sieciowych korzysta Git HTTPS transport.


18
2017-12-05 13:28



Upewnij się też chmod 0600 ~/.netrc. - poolie
Po prostu chcę zostawić link do pliku Strona domowa Ubuntu netrc. Musiałem utworzyć go dla innego użytkownika (/home/git/.netrc), a następnie zmienić jego własność. - zacharydl