Sklonowałem moje repozytorium git na ssh. Dlatego za każdym razem, gdy komunikuję się z nadrzędnym urządzeniem nadrzędnym przez pchanie lub ciągnięcie, muszę ponownie wprowadzić hasło. Jak skonfigurować git, aby nie trzeba było wielokrotnie wpisywać hasła?
195
Odpowiedzi:
Spróbuj
ssh-add
, musiszssh-agent
uruchomić i trzymać swój klucz prywatny(Ok, odpowiadając na zaktualizowane pytanie, najpierw uruchamiasz,
ssh-keygen
aby wygenerować klucz publiczny i prywatny, jak wyjaśnił Jefromi . Umieszczasz klucz publiczny na serwerze. Powinieneś użyć hasła, jeśli nie masz odpowiednika zwykłego -tekstowe hasło w kluczu prywatnym. Ale kiedy to zrobisz, potrzebujesz ze względów praktycznych, jak wyjaśniono poniżej).ssh-agent
Chcesz się uruchamiać
ssh-agent
w tle podczas logowania. Po zalogowaniu chodzi o to, aby uruchomićssh-add
raz i tylko jeden raz, aby dać agentowi twoje hasło, aby zdekodować klucz. Agent następnie po prostu siedzi w pamięci z odblokowanym i załadowanym kluczem, gotowy do użycia za każdym razem, gdy gdzieś ssh.Wszystkie polecenia ssh-family 1 skonsultują się z agentem i automatycznie będą mogły użyć twojego klucza prywatnego.
W systemach OSX (err, macOS ), GNOME i KDE
ssh-agent
zwykle uruchamiany jest automatycznie. Przejdę do szczegółów, na wypadek gdybyś, podobnie jak ja, miał Cygwin lub inne środowisko Windows, w którym z pewnością nie zostanie to zrobione.Kliknij tutaj:
man ssh-agent
.Istnieją różne sposoby automatycznego uruchamiania agenta. Jak wyjaśnia strona podręcznika, możesz go uruchomić, aby był rodzicem wszystkich innych procesów sesji logowania. W ten sposób zmienne środowiskowe, które udostępnia, będą automatycznie znajdować się we wszystkich twoich powłokach. Po (późniejszym) wywołaniu
ssh-add
lubssh
oboje będą mieli dostęp do agenta, ponieważ wszystkie one mają zmienne środowiskowe z nazwami ścieżek magicznych lub cokolwiek innego.Alternatywnie, możesz uruchomić agenta jako zwykłe dziecko, zapisać ustawienia środowiska w pliku i źródło tego pliku w każdej powłoce, gdy się uruchomi.
Moje systemy OSX i Ubuntu automatycznie wykonują konfigurację uruchamiania agenta, więc wszystko, co muszę zrobić, to uruchomić się
ssh-add
raz. Spróbuj uruchomićssh-add
i sprawdź, czy to działa, jeśli tak, to musisz to zrobić tylko raz przy ponownym uruchomieniu.Mój system Cygwin potrzebował tego ręcznie, więc zrobiłem to w sobie
.profile
i mam.bashrc
źródło.profile
:.agent
Plik jest tworzony automatycznie przez skrypt; zawiera definicje i eksport zmiennych środowiskowych. Powyższe próbuje źródła pliku .agent, a następnie próbujeps(1)
agenta. Jeśli to nie działa, uruchamia agenta i tworzy nowy plik agenta. Możesz także uruchomić,ssh-add
a jeśli się nie powiedzie, uruchom agenta.1. A nawet lokalny i zdalny
sudo
z odpowiednim rozszerzeniem pam.źródło
ssh-agent
, prawdopodobnie lepiej jest użyć:eval `ssh-agent`
Miałem podobny problem z GitHub, ponieważ korzystałem z protokołu HTTPS. Aby sprawdzić, jakiego protokołu używasz, po prostu uruchom
i spójrz na linię zaczynającą się od
remote.origin.url
. Aby zmienić protokółźródło
Permission denied
błąd.git remote set-url origin [email protected]:your_username/your_project.git
Chodzi o konfigurację ssh, a nie git. Jeśli jeszcze tego nie zrobiłeś, powinieneś użyć
ssh-keygen
(z pustym hasłem), aby utworzyć parę kluczy. Następnie skopiuj klucz publiczny do zdalnego miejsca docelowego za pomocąssh-copy-id
. O ile nie potrzebujesz wielu kluczy (np. Bezpieczniejszego z hasłem do innych celów) lub masz naprawdę dziwne rzeczy o wielu tożsamościach, jest to proste:Edycja: Naprawdę powinieneś po prostu przeczytać odpowiedź DigitalRoss, ale: jeśli używasz kluczy z hasłami, musisz użyć,
ssh-add <key-file>
aby je dodaćssh-agent
(i oczywiście uruchomić,ssh-agent
jeśli twoja dystrybucja jeszcze dla ciebie nie działa).źródło
ssh-agent
ponieważ chce ominąć problem „enter-the-passsphrase-za każdym razem”. Nie przegrywanie, ale myślę, że musisz poprawić tę odpowiedź, chyba że to ja źle zrozumiałem ...ssh-agent
. +1 dla Ciebie!ssh-*
nazywane jest hasło potrzebne do skorzystania z klucza - gdzie tak naprawdę miałeś na myśli swoje rzeczywiste hasło użytkownika na pilocie?Upewnij się, że po sklonowaniu repozytorium zrobiłeś to z adresem URL SSH, a nie HTTPS; w polu sklonowanego adresu URL repozytorium wybierz protokół SSH przed skopiowaniem adresu URL. Zobacz zdjęcie poniżej:
źródło
Jeśli sklonowałeś za pomocą HTTPS (zalecane), to: -
i wtedy
limit czasu = 2592000 (30 dni w sekundach), aby włączyć buforowanie na 30 dni (lub cokolwiek Ci odpowiada).
Teraz uruchom proste polecenie git, które wymaga twojej nazwy użytkownika i hasła.
Wprowadź swoje dane logowania raz, a teraz buforowanie jest włączone przez 30 dni.
Spróbuj ponownie z dowolnym poleceniem git, a teraz nie potrzebujesz żadnych poświadczeń.
Aby uzyskać więcej informacji: - Buforowanie hasła GitHub w Git
Uwaga : Aby korzystać z pomocnika poświadczeń, potrzebujesz Git 1.7.10 lub nowszej wersji. Podczas ponownego uruchamiania systemu może być konieczne ponowne wprowadzenie hasła.
źródło
Rozszerzając przemyślenia Mueina dla tych, którzy wolą edytować pliki bezpośrednio niż uruchamianie poleceń w git-bash lub terminalu.
Przejdź do katalogu .git swojego projektu (katalog główny projektu na komputerze lokalnym) i otwórz plik „config”. Następnie wyszukaj [zdalne „pochodzenie”] i ustaw konfigurację adresu URL w następujący sposób:
źródło
Myślę, że są tutaj dwie różne rzeczy. Pierwszym z nich jest to, że normalne uwierzytelnianie SSH wymaga od użytkownika podania hasła do konta (gdzie hasło do konta zostanie uwierzytelnione różnymi metodami, w zależności od konfiguracji sshd).
Możesz uniknąć wprowadzania tego hasła za pomocą certyfikatów. W przypadku certyfikatów nadal musisz podać hasło, ale tym razem jest to hasło do twojego klucza prywatnego (który jest niezależny od hasła do konta).
Aby to zrobić, postępuj zgodnie z instrukcjami wskazanymi przez steveth45:
Jeśli chcesz uniknąć wpisywania hasła certyfikatu za każdym razem, możesz użyć ssh-agent, jak wskazał DigitalRoss
Jedynym problemem ssh-agenta jest to, że przynajmniej na * nix musisz umieścić hasło certyfikatu do każdej nowej powłoki. Następnie certyfikat jest „ładowany” i można go użyć do uwierzytelnienia na serwerze ssh bez podawania hasła. Ale to dotyczy tej konkretnej powłoki.
Z pęku kluczy możesz zrobić to samo, co ssh-agent, ale „na cały system”. Po włączeniu komputera otwierasz powłokę i podajesz hasło do certyfikatu. I wtedy każda inna powłoka użyje tego „załadowanego” certyfikatu, a twoje hasło nigdy nie będzie pytane, dopóki nie uruchomisz ponownie komputera.
Gnome ma podobną aplikację o nazwie Gnome Keyring, która pyta o hasło certyfikatu przy pierwszym użyciu, a następnie przechowuje je w bezpieczny sposób, abyś nie był więcej pytany.
źródło
AddKeysToAgent yes
w .ssh / config. Następnie jest ładowany do pamięci, dopóki nieJeśli używasz github, mają bardzo fajny samouczek, który wyjaśnia to jaśniej (przynajmniej dla mnie).
http://help.github.com/set-up-git-redirect/
źródło
Gdy zostaniesz poproszony o hasło, zostaw je puste, tzn. Naciśnij enter. tak proste jak to!!
źródło
Spróbuj tego z pudełka, z którego wypychasz
Powinieneś wtedy otrzymać mile widzianą odpowiedź od github i będzie dobrze, aby pchać.
źródło
Hi gkucmierz! You've successfully authenticated, but GitHub does not provide shell access.
Ale jakoś git wciąż pyta mnie o hasło, kiedy próbuję pchaćMusiałem sklonować repozytorium git z serwera, który nie zezwalał na logowanie za pomocą klucza ssh, ale tylko za pomocą użytkownika / hasła. Nie znalazłem sposobu, aby skonfigurować wtyczkę Git tak, aby używała prostej kombinacji użytkownik / hasło, więc dodałem następujące polecenie powłoki jako krok przed kompilacją na komputerze z linuksem, który zależy od oczekiwanego narzędzia (apt-get install expect):
TO NIE JEST DOBRY SPOSÓB ROZWIĄZANIA TEGO PROBLEMU, JEŻELI HASŁO JEST WYŚWIETLANE JAKO JASNY TEKST W KONFIGURACJI I DZIENNIKACH JENKINS! UŻYWAJ JEDYNIE, JEŚLI NIE MA SPOSOBU KONFIGURACJI AUTORYZACJI KLUCZA RSA LUB INNYCH MOŻLIWOŚCI KONFIGURACJI!
źródło
Dodaj pojedynczy wiersz
AddKeysToAgent yes
w górnej części pliku .ssh / config. Oczywiście ssh-agent musi być uruchomiony wcześniej. Jeśli nie działa (sprawdź przezprep ssh-agent
), po prostu uruchom goeval $(ssh-agent)
Teraz klucz jest ładowany systemowo do pamięci i nie musisz ponownie wpisywać hasła.
Źródłem rozwiązania jest /ubuntu/362280/enter-ssh-passphrase-once/853578#853578
źródło
Staram się cały czas unikać wpisywania hasła, ponieważ używam ssh w systemie Windows. To, co zrobiłem, to zmodyfikowałem mój plik .profile, aby wprowadzić hasło w jednej sesji. Oto fragment kodu:
więc wpisuję moje hasło raz na sesję.
źródło
Wypróbowałem wszystkie te sugestie i jeszcze więcej, tylko po to, aby móc uzyskać klon z mojej instancji AWS. Nic nie działało. W końcu oszukałem z desperacji: skopiowałem zawartość pliku id_rsa.pub na mojej lokalnej maszynie i dołączyłem ją do ~ / .ssh / known_hosts w mojej instancji AWS.
źródło