Zabrane tu informacje to ekstrakt z oficjalnej strony www.ssh.com. Pomaga to zrozumieć ogólne zasady działania mechanizmów logowania z użyciem pary kluczy: prywatnego i publicznego.
Proces połączenia z serwerem przy zastosowaniu SSH
Do poprawnej komunikcji z serwerem za pomocą kluczy SSH, klucz publiczny klienta musi się znaleźć na serwerze na liście zaufanych kluczy
~/.ssh/authorized_keys
Będzie on później używany do enkrypcji wiadomości wysyłanych do klienta przez serwer. Istnieje kilka metod jego umieszczenia tam.
Kiedy poraz pierwszy klient łączy się z serwerem inicjując połączenie, serwer odpowiada swoim kluczem publicznym. Jeżeli klient go akceptuje, to jest on zapisywany w pliku
~/.ssh/known_hosts
Od tej pory, wszystkie informacje wysyłane do serwera będą szyfrowane tym kluczem. Tylko właściciel klucza prywatnego jest w stanie zdeszyfrować wiadomość.
Klucze:
- prywatny - tajny i przechowywany po stronie klienta/użytkownika. Często plik jest dodatkowo zabezpieczony hasłem i trzymany w katalogu dostepnym tylko dla root-a. Klucz ten jest używany do generowania klucza publicznego i do dekodowania informacji zaszyfrowanej kluczem publicznym.
- publiczny - dostępny dla każdego, wysyłany wraz z informacją do odbiorcy. Do mechanizmu logowania, musi znadować się na serwerze i posiadać autoryzację
Generowanie pary kluczy:
Do generowania kluczy służy aplikacja ssh-keygen. Aby wygenerować parę kluczy publicznego i prywatnego stosując algortym RSA, o długości 4096 bytów, do pliku o nazwie "moje_klucze" musimy wydać polecenie:
> ssh-keygen -t rsa -b 4096 -f moje_klucze
Generowanie klucza publicznego z prywatnego:
Tak, da się tak. Posiadając klucz prywatny możemy wygenerować klucz publiczny. Do tego celu posłuży aplikacja ssh-keygen:
> ssh-keygen -y -f sciezka/do/klucza/prywatnego/moj_klucz > sciezka/do/klucza/prywatnego/moj_klucz.pub
To nie pomyłka w ścieżkach. Pliki powinny, ale nie muszą, być trzymane w jednym miejscu.
Kopiowanie klucza na serwer:
Po wygenerowaniu pary kluczy, musimy publiczny umieścić na serwerze. Używając aplikacji ssh-copy-id zawartość klucza będzie automatycznie sprawdzona i dodana do zestawu kluczy autoryzowanych. Można się do tego posłużyć poleceniem:
> ssh-copy-id -i sciezka/do/pliku/z/kluczem/publicznym -p 2222 user_name@server_name
Lista kluczy:
W prosty sposób można zobaczyć listę już utworzonych kluczy. Pliki domyślnie składowane są w katalogu domowym:
- linux: ~/.ssh
- windows - c:/users/user_name/.ssh
lub używając aplikacji ssh-add:
> ssh-add -L
Logowanie:
> ssh -p 2222 user_name@server_name