klucze ssh ssh-agent bash i ssh-add

28

Jestem nowy w ssh klucze. Czy ktoś może wyjaśnić, jak działa ssh-agent bashi ssh-add?

Muszę zrozumieć jego elementy wewnętrzne w przyszłości.

maneeshshetty
źródło
Czy wypróbowałeś najlepszy hit Google dla któregokolwiek z tych warunków?
Daniel Beck
Tak. Nie dostałem żadnych przydatnych informacji. Mój zły
maneeshshetty

Odpowiedzi:

44

Agent to program, który trzyma klucze w pamięci tak, że trzeba tylko odblokować je raz , zamiast za każdym razem. ssh-agent robi to dla kluczy SSH.

Typowe metody uruchamiania ssh-agent to:

  • eval `ssh-agent`- uruchamia to agenta w tle i ustawia odpowiednie zmienne środowiskowe dla bieżącej instancji powłoki.

    ( ssh-agent , po uruchomieniu bez argumentów, wyświetla polecenia do interpretacji przez powłokę).

  • exec ssh-agent bash- uruchamia nową instancję bashpowłoki, zastępując obecną.

    (Przy jednym lub większej liczbie argumentów ssh-agent nie wypisuje niczego, ale uruchamia określone polecenie: w tym przypadku bashpowłokę, ale technicznie może to być cokolwiek.)

    Druga metoda jest czasami preferowana, ponieważ automatycznie zamyka ssh-agent po zamknięciu okna terminala. (Po uruchomieniu go evalagent pozostałby uruchomiony, ale niedostępny).

Jednak to uruchamia tylko pustego agenta. Aby faktycznie był użyteczny, musisz użyć ssh-add , który odblokowuje twoje klucze (zwykle ~/.ssh/id_*) i ładuje je do agenta, czyniąc je dostępnymi dla połączeń ssh lub sftp .

grawitacja
źródło
3
Czy istnieje sposób, aby jednorazowo uruchomić ssh-agent w wielu sesjach bash?
Asim
9

Ponadto możesz dodać niektóre klucze na początku sesji.

Edytuj ~/.bashrcplik i dodaj:

ssh-add &>/dev/null || eval `ssh-agent` &>/dev/null  # start ssh-agent if not present
[ $? -eq 0 ] && {                                     # ssh-agent has started
ssh-add ~/.ssh/your_private.key1 &>/dev/null        # Load key 1
ssh-add ~/.ssh/your_private.key2 &>/dev/null        # Load key 2
}

Sprawdź swoje klucze za pomocą ssh-add -l

Możesz zatrzymać bieżącą sesję agenta ssh za pomocą ssh-agent -k

Coś, co należy wiedzieć o ssh-agent i .bashrc, to nie ładowanie zbyt wielu kluczy. Domyślna liczba prób demona ssh jest ograniczona do 6. Można to zmienić /etc/ssh/sshd_configza pomocą MaxAuthTrieswartości.

użytkownik1293603
źródło
1
Co z hasłem klucza prywatnego podczas uruchamiania za ssh-addpomocą „&”? Czy zakładasz, że pliki kluczy prywatnych nie są chronione?
Luciano,
Powyższy kod pyta o hasło dwa razy, raz podczas sprawdzania, czy ssh-agent jest dostępny i ponownie po załadowaniu klucza prywatnego.
Tapan Chandra