Jak uniknąć podania nazwy użytkownika i hasła przy każdym git push?

I git push Moja praca do zdalnego repozytorium Git.

Każdy push poprosi mnie o wprowadzenie username i password. Chciałbym go unikać za każdym naciśnięciem, ale jak skonfigurować, aby go uniknąć?

Author: nbro, 2011-12-21

18 answers

1. Generowanie klucza SSH

Linux / Mac

Otwórz terminal, aby utworzyć klucze ssh:

cd ~                 #Your home directory
ssh-keygen -t rsa    #Press enter for all values

Dla Windows

(działa tylko wtedy, gdy program commit może używać certyfikatów / prywatnych i publicznych kluczy ssh)

  1. użyj Putty Gen, aby wygenerować klucz
  2. Eksportuj klucz jako otwarty klucz SSH
W tym celu należy wykonać następujące czynności:]}

2. Skojarzyć klucz SSH z pilotem repozytorium

Ten krok różni się w zależności od konfiguracji pilota.

  • Jeśli jest to repozytorium GitHub i masz uprawnienia administracyjne, przejdź do ustawienia i kliknij "Dodaj klucz SSH". Skopiuj zawartość ~/.ssh/id_rsa.pub do pola oznaczonego "klucz".

  • Jeśli Twoje repozytorium jest administrowane przez kogoś innego, daj administratorowi id_rsa.pub.

  • Jeśli Twoje zdalne repozytorium jest administrowane przez twoje, możesz użyj tego polecenia na przykład:

    scp ~/.ssh/id_rsa.pub YOUR_USER@YOUR_IP:~/.ssh/authorized_keys/id_rsa.pub

3. Ustaw zdalny adres URL do formularza obsługującego SSH 1

Jeśli wykonałeś powyższe kroki i nadal otrzymujesz monit o hasło, upewnij się, że adres URL repo jest w formularzu

git+ssh://[email protected]/username/reponame.git

W przeciwieństwie do

https://github.com/username/reponame.git

Aby zobaczyć adres URL repo, Uruchom:

git remote show origin

Możesz zmienić adres URL za pomocą:

git remote set-url origin git+ssh://[email protected]/username/reponame.git

[1] Ta sekcja zawiera odpowiedź z Eric P

 239
Author: First Zero,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-28 02:13:49

Stałe uwierzytelnianie z repozytoriami Git,

Uruchom następujące polecenie, aby włączyć buforowanie poświadczeń.

$ git config credential.helper store
$ git push https://github.com/repo.git

Username for 'https://github.com': <USERNAME>
Password for 'https://[email protected]': <PASSWORD>

Użycie powinno również określać buforowanie expire ,

git config --global credential.helper 'cache --timeout 7200'

Po włączeniu buforowania poświadczeń, będzie on buforowany przez 7200 sekund (2 godziny).

Uwaga: Pomocnik uwierzytelniający przechowujący niezaszyfrowane hasło na dysku lokalnym.

 130
Author: Jay Patel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-22 11:48:00

Jeśli masz już skonfigurowane klucze SSH i nadal wyświetlany jest monit o hasło, upewnij się, że adres URL repo jest w formie

git+ssh://[email protected]/username/reponame.git

W przeciwieństwie do

https://github.com/username/reponame.git

Aby zobaczyć adres URL repo, Uruchom:

git remote show origin

Możesz zmienić adres URL za pomocą git remote set-url w następujący sposób:

git remote set-url origin git+ssh://[email protected]/username/reponame.git
 106
Author: Eric P,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-14 06:43:41

Po prostu użyj opcji --repo dla polecenia git push. TAK:

$ git push --repo https://name:[email protected]/name/repo.git
 36
Author: Pavel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-26 23:19:44

Zapisywanie W Nieskończoność

Możesz użyć git-credential-store poprzez

git config credential.helper store

Które przechowuje Twoje hasło niezaszyfrowane w systemie plików :

Używanie tego helpera będzie przechowywać hasła niezaszyfrowane na dysku, chronione tylko przez uprawnienia systemu plików. Jeśli nie jest to akceptowalna wymiana zabezpieczeń, spróbuj git-credential-cache lub znajdź pomocnika, który integruje się z bezpieczną pamięcią masową dostarczaną przez Twój system operacyjny.

Z Timeout

Użyj git-credential-cache , który domyślnie przechowuje hasło przez 15 minut.

git config credential.helper cache

Aby ustawić inny limit czasu, użyj --timeout (tutaj 5 minut)

git config credential.helper 'cache --timeout=300'

Bezpieczne zapisywanie na czas nieokreślony (OS X i Windows)

  • jeśli używasz Mac ' a, Git jest wyposażony w tryb "osxkeychain" , który buforuje poświadczenia w bezpiecznym pęku kluczy dołączonym do Twojego konta systemowego. Ta metoda przechowuje poświadczenia na dysku, a nigdy nie wygasają, ale są szyfrowane przy użyciu tego samego systemu, który przechowuje certyfikaty HTTPS i automatyczne wypełnianie Safari.
  • jeśli używasz systemu Windows, możesz zainstalować helper o nazwie " Git Credential Manager for Windows." jest to podobne do opisanego powyżej helpera" osxkeychain", ale używa magazynu poświadczeń systemu Windows do kontrolowania poufnych informacji. Można go znaleźć pod adresem https://github.com/Microsoft/Git-Credential-Manager-for-Windows . [35]]}
 13
Author: serv-inc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-16 17:12:51

Używałem linku https (https://github.com/org/repo.git) zamiast linku ssh;

[email protected]:org/repo.git  

Przełączanie rozwiązało problem dla mnie!

 8
Author: ishan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-25 07:55:50

Podłącz klienta git do sklepu poświadczeń systemu operacyjnego. Na przykład w systemie Windows można powiązać helpera poświadczeń z wincred:

git config --global credential.helper wincred

Czy istnieje sposób na pominięcie wpisywania hasła podczas korzystania z https: / / na GitHub?

 4
Author: Daniel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:03:02

Użyłem odpowiedzi, którą zaproponował Pavel i zadziałało na mnie. Moja różnica polegała na tym, że podczas dodawania pilota Tak: git remote add (alias) https://(name:password)@github.com/(the remote address).git

 3
Author: dsmryder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-05 03:40:18

W systemie operacyjnym Windows użyj tego zamiast tego, to działa dla mnie:

https://{Username}:{Password}@github.com/{Username}/{repo}.git

Np.

git clone https://{Username}:{Password}@github.com/{Username}/{repo}.git

git pull https://{Username}:{Password}@github.com/{Username}/{repo}.git

git remote add origin https://{Username}:{Password}@github.com/{Username}/{repo}.git

git push origin master
 3
Author: Ayejuni Ilemobayo Kings,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-20 17:13:34

Moje rozwiązanie na Windows:

  1. Kliknij prawym przyciskiem myszy w katalogu, aby nacisnąć i wybrać "Git Bash Here".
  2. ssh-keygen -t rsa (naciśnij enter dla wszystkich wartości)
  3. Sprawdź terminal dla: Your public key has been saved in /c/Users/<your_user_name_here>/.ssh/id_rsa.pub
  4. skopiuj klucz publiczny z podanego pliku.
  5. przejdź do profilu GitHub = > Ustawienia = > klucze SSH i GPG = > nowy klucz SSH = > wklej tam swój klucz SSH = > Zapisz
 2
Author: Мони Мон,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-10 18:46:41

Chciałem tylko zwrócić uwagę na coś o rozwiązaniu wspomnianym powyżej kilka razy:

git config credential.helper store

Możesz użyć dowolnego polecenia, które wymaga hasła. Nie musisz przeć. (możesz również wyciągnąć na przykład) po tym, nie musisz wpisywać ponownie swojej nazwy użytkownika / hasła.

 2
Author: TrollAxeThrower,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-26 12:06:18

Wszystko to wynika z tego, że git nie udostępnia w poleceniach clone/pull/push/fetch opcji wysyłania poświadczeń przez rurę. Chociaż to daje poświadczenie.helper, przechowuje w systemie plików lub tworzy demona itp. Często poświadczenia GIT są poziomami systemowymi, a zadaniem, aby je chronić, jest wywoływanie poleceń git przez aplikację. Bardzo niebezpieczne.

Oto, co musiałem obejść. 1. Wersja Git (git --version) powinna być większa lub równa 1.8.3.

GIT CLONE

Do klonowania użyj "git clone URL" po zmianie adresu URL z formatu, http: / / {myuser}@{my_repo_ip_address} / {myrepo_name.git} do http://{myuser}: {mypwd}@{my_repo_ip_address} / {myrepo_name.git}

Następnie wyczyść repozytorium hasła jak w następnej sekcji.

Oczyszczanie

Teraz to by odeszło i

  1. zapisałem hasło w git remote origin. Wpisz "git remote-v", aby zobaczyć uszkodzenia. Popraw to, ustawiając adres URL źródła zdalnego bez hasła. "git remote set_url origin http: / / {myuser}@{my_repo_ip_address} / {myrepo_name.git} "
  2. wpisałem hasło .git / loguje się do repozytorium. Zastąp wszystkie instancje pwd za pomocą polecenia Uniksa, takiego jak find .git / logs-exec sed-i 'S / {my_url_with_pwd} / / g' {} \; Tutaj {my_url_with_pwd} jest adresem URL z hasłem. Ponieważ adres URL ma ukośniki do przodu, musi być unikany przez dwa ukośniki do tyłu. For ex, for the URL http://kris:[email protected]/proj.git - > http:\\/\\/kris:[email protected]\\/proj.git

Jeśli Twoja aplikacja używa Javy do wydawania tych poleceń, użyj ProcessBuilder zamiast Runtime. Jeśli musisz użyć Runtime, użyj getRunTime ().exec, który pobiera tablicę łańcuchów jako argumenty z /bin/bash i-c jako argumentami, a nie ten, który pobiera pojedynczy łańcuch jako argument.

GIT FETCH/PULL / PUSH

  1. Ustaw hasło w zdalnym adresie URL git jako : "git remote set_url origin http://{myuser}: {mypwd}@{my_repo_ip_address} / {myrepo_name.git} "
  2. wydaje polecenie git fetch/push / pull. Nie zostanie wyświetlony monit o podanie hasła.
  3. wykonaj czyszczenie jak w poprzedniej sekcji. Nie przegap tego.
 1
Author: Krishna,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-25 03:42:01

Jeśli Twój komputer jest Bezpieczny lub nie zależy ci na zabezpieczeniu hasłem, można to osiągnąć w bardzo prosty sposób. Zakładając, że zdalne repozytorium znajduje się na GitHub i origin jest lokalną nazwą zdalnego repozytorium, użyj tego polecenia

git remote set-url --push origin https://<username>:<password>@github.com/<repo>

Znacznik --push zapewnia zmianę adresu URL repozytorium tylko dla polecenia git push. (Pytanie zadane w oryginalnym poście dotyczy tylko komendy git push. Wymaganie nazwy użytkownika+hasła tylko dla operacji push jest normalną konfiguracją dla public repozytoria na Githubie . Zauważ, że private repozytoria na GitHub również wymagają nazwy użytkownika i hasła do operacji pull and fetch, więc dla prywatnego repozytorium nie chcesz używać --push flag...)

WARNING: to jest z natury niezabezpieczone, ponieważ:

  1. Twój ISP lub każdy rejestrujący dostęp do sieci może łatwo zobacz hasło w postaci zwykłego tekstu w adresie URL;

  2. Każdy, kto uzyska dostęp do twojego komputera można wyświetlić hasło za pomocą git remote show origin.

Dlatego użycie klucza SSH jest akceptowaną odpowiedzią.

Nawet klucz SSH nie jest całkowicie bezpieczny . Każdy, kto uzyska dostęp do twojego komputera, może na przykład wykonać push, który zniszczy twoje repozytorium lub-co gorsza - push commity wprowadzając subtelne zmiany w kodzie. (Wszystkie wciśnięte commity są wyraźnie widoczne na Githubie. Ale jeśli ktoś chciał zmienić twój kod dyskretnie, mógł --amend poprzedni commit bez zmiany komunikatu commit, a następnie naciśnij go siłą. To byłoby ukradkiem i dość trudne do zauważenia w praktyce.)

Ale ujawnienie hasła jest gorsze . Jeśli atakujący zdobędzie wiedzę na temat twojej nazwy użytkownika i hasła, może zrobić takie rzeczy, jak zablokowanie twojego własnego konta, usunięcie konta, trwałe usunięcie repozytorium itp.


Alternatywnie-dla uproszczenia i Bezpieczeństwo - możesz podać tylko swoją nazwę użytkownika w URL, dzięki czemu będziesz musiał wpisywać swoje hasło za każdym razem git push, ale nie będziesz musiał za każdym razem podawać swojej nazwy użytkownika. (Bardzo podoba mi się to podejście, konieczność wpisania hasła daje mi pauzę do myślenia za każdym razem, gdy git push, więc nie mogę git push przez przypadek.)

git remote set-url --push origin https://<username>@github.com/<repo>
 1
Author: radfast,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-19 18:49:24

Musisz skonfigurować klucz prywatny SSH, możesz przejrzeć tę Stronę, Jak zrobić konfigurację na Macu, jeśli jesteś na Linuksie przewodnik powinien być prawie taki sam, w systemie Windows potrzebujesz narzędzia takiego jak MSYS.

 0
Author: RageZ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-21 11:02:08

Krok 1-

Utwórz klucze SSH w systemie linux używając poniższego polecenia

ssh-keygen -t rsa -b 4096 -C "your_email"

Zapyta o hasło i nazwę pliku (domyślnie będzie to~/.ssh / id_rsa,~/.ssh / id_rsa.pub)

Krok 2 -

Po utworzeniu pliku Dodaj klucz publiczny id_rsa.pub do sekcji SSH konta github.

Krok 3-

Na twoim komputerze Dodaj klucz prywatny id_rsa do SSH-agenta używając poniższego polecenia

ssh-add ~/.ssh/id_rsa 

Krok 4-

Teraz dodaj zdalny url [email protected]:user_name/repo_name.git do lokalnego Git repo używając poniższego polecenia.

git remote remove origin
git remote add origin [email protected]:user_name/repo_name.git
To wszystko.
 0
Author: Anil Agrawal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-20 23:03:59

Wygląda na to, że przynajmniej podczas używania TortoiseGIT w systemie Windows można utworzyć klucze SSH i przesłać je do serwera GIT używając po prostu:

> ssh-keygen.exe
> ssh-copy-id [username]@[GIT_server]
 0
Author: EquipDev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-20 15:52:05

Utworzyłem puste repo w GitHubie, a następnie ...

git push -u origin master

Musisz skonfigurować zdalny adres URL ssh, jak opisano powyżej.

 0
Author: Prabin Deka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-14 06:27:29

Uruchomienie poniższego polecenia rozwiązało problem.

git config --global credential.helper wincred

Proszę zapoznać się z poniższą dokumentacją github:

https://help.github.com/articles/caching-your-github-password-in-git/
 0
Author: Krishna,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-10 19:46:36