Przeczytałem oficjalną definicję:
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 środowiskowych agent może zostać zlokalizowany i automatycznie użyty do uwierzytelnienia podczas logowania do innych komputerów za pomocą ssh (1).
„.. program do przechowywania kluczy prywatnych.” - IMHO - klucze ssh są generowane przez użytkownika za pomocą polecenia ssh-keygen i po prostu przechowywane w ~ / .ssh - dlaczego potrzebuję demona do przechowywania tych kluczy? Jak to dokładnie je trzyma - czy nie są one po prostu przechowywane w .ssh?
„są uruchamiane jako klienci programu ssh-agent” - nie rozumiem. Gdzie by to było potrzebne? Zwykle używam ssh w następujący sposób:
ssh -i ~/.ssh/private_key_name username@hostname
Co dokładnie oznacza „klient” - co to za klienci? Czy nie uruchamiasz po prostu komendy ssh z terminala, aby się połączyć - jacy są inni klienci i dlaczego nie mogą po prostu użyć ścieżki do tego prywatnego pliku ssh, tak jak komenda ssh?
~/.ssh/config
„sIdentityFile
opcja jest dobra do, z lub bez środka~/.ssh/config
kluczu, który klucz ma być używany dla zdalnego hosta, aby wiedział dokładnie, którego potrzebuje.ssh-agent
nie jest to konieczne, jeśli klucz prywatny nie jest chroniony hasłem?Zaletą
ssh-agent
jest to, że hasło należy wpisać tylko raz. Jeśli twój prywatny klucz RSA nie jest szyfrowany za pomocą hasła, ssh-agent nie jest konieczny.ssh
Komenda będzie przykładem klienta.źródło
Jeśli rutynowo wchodzisz
ssh
na wiele różnych komputerów, każdy z własnym kluczem i hasłem, wówczas uruchomieniessh-agent
pozwala wprowadzić hasło dla każdego klucza raz 1 na początku sesji, a następnie możesz uwierzytelnić się na każdym komputerze tyle razy, ile razy jak chcesz, bez konieczności ponownego wprowadzania hasła.Kolejną korzyścią jest to, że zgodnie ze
man
stroną agent nigdy nie wysyła klucza prywatnego przez kanał żądania; więc jeśli przeskakujesz między różnymi skrzynkami, twoje klucze prywatne są chronione.1 Możesz ustawić
life
czas przechowywania kluczy w agencie.źródło
Artykuł w Wikipedii ma prawdopodobnie najlepszy opis:
Znowu dosłownie z artykułu w Wikipedii:
Zazwyczaj jest umieszczany w plikach rc systemu lub użytkownika, takich jak
$HOME/.bashrc
lub$HOME/.profile
(dla powłok bash), abyssh-agent
zestaw zmiennych środowiskowych został całkowicie włączony do środowiska.W moim systemie Fedora 14 uruchamia się dość wcześnie jako część podsystemu X11. W tym pliku
/etc/X11/xinit/xinitrc-common
:Zmienna
$SSH_AGENT
jest następnie wykorzystywana w innych skryptach startowych X11, takich jak tutaj/etc/X11/xinit/Xclients
:Po włączeniu go tutaj, następujące zmienne środowiskowe są ustawiane jako część powłoki nadrzędnej, dlatego też wszystkie dzieci pod rozwidleniem powinny je mieć, na przykład:
Jest w tym trochę więcej złożoności, ale w skrócie to w zasadzie o to chodzi
ssh-agent
.Na przykład w GNOME
ssh-agent
jest uruchamiany na użytkownika jako aplikacja startowa:TL; DR
Podsumowując,
ssh-agent
istnieje tak, że gdy twoje klucze ssh są wymagane, musisz je odblokować tylko raz za pomocą hasła (zakładając, że je mają), a następnie są dostępne w formie odszyfrowanej w pamięci (RAM).źródło
„są uruchamiane jako klienci programu ssh-agent” odnosi się do idei, że ssh-agent jest uruchamiany podczas (lokalnej) inicjacji sesji logowania, aby wszystkie programy otrzymały zmienne środowiskowe
$SSH_AGENT_PID
i$SSH_AUTH_SOCK
które są niezbędne do podłączenia agenta.Kolejną zaletą wykluczenia obsługi klucza prywatnego z ssh jest to, że ssh-agent można zastąpić gpg-agent. Dzięki temu możesz używać kluczy OpenPGP (z możliwością uwierzytelniania) dla SSH. To dobre rozwiązanie dla kluczy OpenPGP na karcie inteligentnej.
źródło