Jak uniknąć wpisywania ssh-add za każdym razem

11

Przeczytałem i śledziłem dokumentację online, jak skonfigurować agenta ssh, aby nie musiałem wpisywać hasła za każdym razem, gdy ssh do zdalnego komputera.

Jednak przy pomocy ssh-agent nadal muszę to robić przy ssh-addkażdym ponownym uruchomieniu powłoki. ssh-addPyta mnie wprowadzić hasło, aby odblokować klucz prywatny.

Enter passphrase for key '/home/xx/.ssh/id_rsa':

Zamiast wpisywać hasło do komputera zdalnego, pojawia się monit o wpisanie hasła do klucza prywatnego. To tak, jakby wyjść z czyśćca i potem znalazłem się w piekle. Wygląda na to, że id_rsa jest tylko tymczasowo dodawany do agenta ssh w sesji , ponieważ za każdym razem loguję się i piszę ssh-add -l. Dostaję:

The agent has no identities.

Czy mogę zapytać, jak trwale przechowywać klucz (id_rsa) w ssh-agent? Dzięki

EDYCJA: to właśnie zrobiłem ssh-agent. Dołączyłem następujący blok~/.bash_profile

SSHAGENT=/usr/bin/ssh-agent                                                                                        
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "SSHAGENT" ]; then
  eval `$SSHAGENT $SSHAGENTARGS`
  trap "kill $SSH_AGENT_PID" 0
fi
ssgao
źródło
Czy masz na myśli, że musisz wpisywać hasło przy każdym logowaniu lub przy każdym otwarciu okna powłoki? Mówisz, że śledziłeś dokumentację online, ale ssh-agent działa w systemie Ubuntu od razu po instalacji, więc nie powinieneś mieć nic do roboty. Co dokładnie zrobiłeś?
Gilles „SO - przestań być zły”,
Muszę wpisywać hasło za każdym razem, gdy ssh do zdalnego komputera. ALE to nie jest hasło dostępu do zdalnego komputera, to hasło do odblokowania mojego klucza prywatnego (id_rsa).
ssgao,
Wiem, że to hasło twojego klucza. Pytam o to, co zrobiłeś, aby skonfigurować ssh-agent i czy uruchamianie ssh-addma efekt, który trwa dłużej niż okno powłoki, w którym go wpisałeś.
Gilles 'SO - przestań być zły'
Efekt trwa do momentu wylogowania z systemu (lokalnego). Umieściłem to, co zrobiłem ssh-agentw poście.
ssgao,
To brzmi jak normalne zachowanie: musisz wpisać hasło raz na sesję, aby odblokować klucz. Jeśli odblokowany klucz był gdzieś przechowywany, nie udałoby mu się to z użyciem hasła do klucza - każdy, kto uzyskałby przechowywany odblokowany klucz, mógłby go użyć. Czy spodziewałeś się czegoś innego? Czy chcesz, aby klucz był przechowywany w pamięci po wylogowaniu, aby był dostępny do następnego uruchomienia?
Gilles „SO- przestań być zły”

Odpowiedzi:

6

Zainstalowałem pęku kluczy.

sudo apt-get install pęku kluczy

Jeśli korzystasz z bash, musisz dodać kilka poleceń do swojego .bash_profile Jeśli nie masz .bash_profile, utwórz je w swoim katalogu domowym. Dodaj te linie:

### START-Keychain ###
# Let  re-use ssh-agent and/or gpg-agent between logins
/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh
### End-Keychain ###

Na początku dnia roboczego zaloguję się. Kiedy otworzę terminal, raz zostaniesz poproszony o moje hasło. W przypadku wszystkich innych nowych terminali i połączeń nie będę więcej proszony o podanie hasła.

walpha
źródło
4
czym to się różni od pisania ssh-addw terminalu?
ssgao
tak, ale wtedy będziesz musiał wpisać ssh-add za każdym razem ... zrobienie tego wyciszy twoje 2 kroki -> eval "$ (ssh-agent)" i ssh-add
abhishek
1

To, czego szukasz, jest mniej bezpieczne, ale można to osiągnąć przy użyciu uwierzytelniania za pomocą klucza publicznego bez potrzeby korzystania z ssh-agent. Bardziej bezpieczną opcją jest użycie uwierzytelniania klucza publicznego za pomocą hasła podczas wyłączania uwierzytelniania hasła na serwerze ssh, ale nie o to prosiłeś. Zobacz link u dołu tej odpowiedzi, aby uzyskać instrukcje, jeśli zdecydujesz się to zrobić.

Aby korzystać z ssh bez pytania o hasło, musisz wygenerować parę kluczy, pozostawiając puste pole hasła.

Aby sprawdzić, czy wygenerowałeś już parę kluczy, sprawdź, czy w katalogu ~ / .ssh znajdują się pliki id_rsa i id_rsa.pub. Jeśli już tam są, możesz je usunąć lub przenieść, aby utworzyć nową parę kluczy.

Uwaga: jeśli je usuniesz, utracisz dostęp do wszystkich używanych serwerów ssh, a następnie starych kluczy do uwierzytelnienia, jeśli uwierzytelnianie hasła jest wyłączone na serwerze.

Aby utworzyć nową parę kluczy, uruchom następujące polecenie:

ssh-keygen -t rsa

Zaakceptuj domyślną lokalizację kluczy i pozostaw puste hasło.

Aby przekazać swój klucz publiczny serwerowi SSH, z którym chcesz się połączyć, użyj następującego polecenia:

ssh-copy-id -i ~/.ssh/id_rsa.pub username@remotehost

Po wykonaniu tych kroków będziesz mógł zalogować się na serwerze zdalnym bez hasła z komputera, którego używasz.

Odniesienie: http://tombuntu.com/index.php/2008/02/20/public-key-authentication-for-ssh-made-easy/

Omegamormegil
źródło
0

Jakiś czas temu nagle zacząłem prosić o hasło, aby odblokować mój klucz ssh podczas działania git push. Okazało się, że aby przestać być proszonym o hasło, wystarczyło dodać SSH Key Agent (GNOME Keyring: SSH Agent) do Aplikacji Autostartowych (w moim przypadku - po prostu zaznaczyć pole wyboru):

wprowadź opis zdjęcia tutaj

Alexey
źródło
Czy możesz rozszerzyć swoją odpowiedź o bardziej szczegółowe informacje, jak to zrobić i dlaczego rozwiązałoby to problem? Dzięki.
Bajt Dowódca