klucz ssh utrzymuje się nawet po usunięciu klucza prywatnego z ~ / .ssh - dlaczego?

18

Wygenerowałem klucze ssh (publiczne i prywatne) i zapisałem je ~/.ssh/myServer/.

Dodałem klucz publiczny do ~/.ssh/authorized_keyspliku serwera i wszystko działa świetnie!

Próbując zrozumieć, jak działają klucze, usunąłem je i zdziwiłem się, że nadal mogę połączyć się z serwerem.

Dlaczego nadal mogę się łączyć bez hasła?

poltj18
źródło

Odpowiedzi:

24

Witamy w cudownym świecie pęku kluczy OS X i agenta ssh ! Ze strony podręcznika:

ssh-agent to program do przechowywania kluczy prywatnych używanych do uwierzytelniania klucza publicznego (RSA, DSA, ECDSA). Chodzi o to, że ssh-agent jest uruchamiany na początku sesji X lub sesji logowania, a wszystkie inne okna lub programy są uruchamiane jako klienci programu ssh-agent. Dzięki zastosowaniu zmiennych zmiennych środowiska ables agent może zostać zlokalizowany i automatycznie użyty do uwierzytelnienia podczas logowania do innych komputerów za pomocą ssh (1).

Twój klucz prywatny został buforowany w agencie i jest stamtąd pobierany w celu uwierzytelnienia sesji. OS X, za pośrednictwem pęku kluczy, wykonuje automatyczne buforowanie agenta ssh, ponieważ jest „przyjazny dla użytkownika”. Może to być trochę niepokojące, ale w większości przypadków jest to przydatne.

Domyślny czas życia kluczy w pamięci podręcznej jest wieczny. To chyba nie jest świetne domyślne. Opróżni klucze z pamięci podręcznej podczas wylogowywania / logowania lub ponownego uruchamiania. Możesz też wymusić kolor, zabijając bieżącego agenta, używając:

ssh-add -D

Możesz wyświetlić wszystkie poświadczenia buforowane przez agenta, uruchamiając:

ssh-add -l

To zrobi to samo, ale pokaże pełne klucze publiczne:

ssh-add -L
Ian C.
źródło
Łał! Wielkie dzięki! Byłem naprawdę zdezorientowany, co się dzieje. Teraz rozumiem!
poltj18
2
@FAYNUS, jeśli to rozwiąże problem, naciśnij zielony znacznik wyboru po prawej stronie, aby oznaczyć go jako „zaakceptowaną odpowiedź”! Witamy, aby zapytać inaczej!
Ian C.