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.


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.


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'

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.


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.


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


To jest absolutnie poprawna odpowiedź. Ponadto, aby mieć uruchomionego ssh-agenta, można użyć usługi użytkownika
— systemd
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.