Jak mogę wykonać polecenie „git pull” bez ponownego wprowadzania hasła SSH?

98

Czy można skonfigurować, git/sshaby nie musieć wpisywać hasła za każdym razem, gdy chcę wykonać git pull? Zauważ, że repozytorium jest prywatne na githubie.

A może alternatywnie, jaka byłaby najlepsza praktyka w zakresie automatyzacji wdrażania kodu z prywatnego repozytorium Github?

Dodatkowe szczegóły: instancja EC2 z publicznym AMI opartym na Fedorze.

jldupont
źródło
2
możliwy duplikat Konfiguracji Gita przez SSH
meagar
Masz rozwiązanie tego problemu?
nim
Od wersji git 2.11+ (Q4 2016) używanie libsecret jest inny sposób: stackoverflow.com/a/40312117/8477066
Hielke Walinga

Odpowiedzi:

70

Spójrz na ten link https://help.github.com/articles/working-with-ssh-key-passphrases/

Ale nie chcę wpisywać długiego hasła za każdym razem, gdy używam klucza!

Ani ja! Na szczęście istnieje sprytne małe narzędzie o nazwie, ssh-agentktóre może bezpiecznie zapisać twoje hasło, więc nie musisz go ponownie wprowadzać. Jeśli korzystasz z systemu OSX Leopard lub nowszego, klucze można zapisać w pęku kluczy systemu, aby jeszcze bardziej ułatwić Ci życie. Większość instalacji Linuksa automatycznie uruchamia ssh-agent po zalogowaniu.

Fredrik Pihl
źródło
3
trochę nerwowy odpowiadając komuś z reputacją 17,7 tys. czy źle zinterpretowałem pytanie ... ;-)
Fredrik Pihl
3
nerwowy? bądź pewny: zdecydowana większość ludzi tutaj jest dość dobrze wychowana ... a ci, którzy nie są, mają większe problemy niż ja :)
jldupont
2
Ten link był pomocny w wyjaśnieniu, jakie polecenia należy uruchomić, aby zapisać hasło w ssh-agent: rabexc.org/posts/using-ssh-agent
Mateus Gondim
Nie chcę używać kluczy. Proste, mam przepustkę użytkownika i chcę ją zapisać po stronie klienta git
nim
Dlaczego łącze zawiera tylko opcje dla komputerów Mac / Widows? Chcę wyciągnąć z serwera unixowego bez ponownego wprowadzania karty. udało mi się sprawić, że to zadziałało dla historycznego projektu, ale nie mogę powiedzieć, co tam zrobiłem. Czy chodzi o to, że kiedy ssh do zdalnej maszyny uniksowej, klucz jest przekazywany dalej i jest używany jako klucz git pull (lub prywatny kompozytor vcs)? Myślę, że coś tu nie rozumiem. Każda pomoc mile
widziana
30

Włączyłem buforowanie haseł zgodnie z opisem tutaj:

https://help.github.com/articles/caching-your-github-password-in-git/#platform-linux

Aby przechowywać hasło w pamięci podręcznej przez miesiąc:

git config --global credential.helper 'cache --timeout=2628000'
Sileria
źródło
Dzięki, temuri- Szukałem wszędzie tego dokładnego szczegółu. To nie działało, ale dokumentacja najwyraźniej nie wspomina, że ​​dotyczy tylko protokołu HTTPS.
Mike Emery,
2
Jeśli używasz hasła ( nie hasła z plikiem klucza) dla opartego na SSH adresu URL zdalnego repozytorium Git, nie możesz w ogóle zapisać hasła. Zauważyłem jednak, że po wydaniu dowolnego polecenia git możesz od razu wpisać hasło i nacisnąć Enter . Nie musisz czekać na wyświetlenie monitu o hasło.
ADTC
1
git nadal pytać pass
nim
12

Spróbuj tego:

git config credential.helper store

Będziesz musiał raz wprowadzić hasło, a następnie zostanie ono zapisane w folderze w katalogu głównym.

Jak wskazano w komentarzach, NIE działa to w przypadku haseł SSH, tylko w przypadku haseł HTTPS.

Jankes
źródło
1
@nim Nie oznacza to, że odpowiedź powinna być negatywna. Zasugerowałem, co dla mnie zadziałało, i ktoś może uznać to za pomocne.
Yankee,
To nie jest zapisywanie hasła. Próbuję i nic nie daje. Jeśli jesteś zdalny w ten sposób ssh: // name @ ip / path
nim
1
Działa to, jeśli chcesz przechowywać podstawowe hasło uwierzytelniania HTTP.
Phil
4
To NIE działa dla haseł SSH, tylko dla haseł HTTPS.
Eliezer Berlin
działa dobrze dla https. Musisz tylko to wpisać. Następnym razem powinno być ostatnim razem, kiedy musisz wprowadzić parafrazę. Następnym razem hasło powinno zostać zapamiętane przez git.
Jonathan
7

Twoja sytuacja jest już naprawiona, jednak dla mnie był to fakt, że miałem więcej niż jeden klucz ~/.ssh/

Aby rozwiązać problem, musiałem utworzyć plik o nazwie ~/.ssh/configi dodać wiersz:

IdentityFile ~/.ssh/my_key2_rsa

gdzie ~/.ssh/my_key2_rsajest mój klucz.

Mogsdad
źródło
1
Dzięki za to, moje id_rsa i id_rsa.pubpliki mają niestandardową nazwę, dlatego git nigdy by ich nie rozpoznał. ref: linux.die.net/man/5/ssh_config
lasec0203
6

Nie wiem, dlaczego nikt jeszcze tego nie zgłosił. Ale najprostszym podejściem byłoby po prostu dodanie pojedynczej linii AddKeysToAgent yesna górze pliku .ssh / config. Oczywiście ssh-agentwcześniej trzeba biec. Jeśli nie działa (sprawdź za pomocą polecenia ssh-agentna terminalu), po prostu go uruchomeval $(ssh-agent)

Mogę potwierdzić, że to działa, ponieważ w moim projekcie z wieloma podmodułami i dla każdego klonowanego podmodułu musiałem wpisać moje hasło ssh. Po powyższej sztuczce nie muszę już tego robić.

Źródłem rozwiązania jest /ubuntu/362280/enter-ssh-passphrase-once/853578#853578

infoclogged
źródło
To jest absolutnie poprawna odpowiedź. Ponadto, aby mieć uruchomionego ssh-agenta, można użyć usługi użytkownika
systemd