generowanie kluczy ssh

Generowanie i używanie kluczy SSH

Klucze SSH są wykorzystywane do uwierzytelnienia komunikacji pomiędzy komputerem a serwerem, pomiędzy dwoma serwerami lub do szyfrowania danych. Po ich wygenerowaniu otrzymujemy parę kluczy. Klucz prywatny, którego nikomu nie udostępniamy oraz klucz publiczny, który przesyłamy na serwer. Osoba, która wejdzie w posiadanie klucza prywatnego ma dostęp do wszystkich serwerów na których znajduje się klucz publiczny, który jest powiązany z kluczem prywatnym. Klucz prywatny należy więc traktować z taką samą powagą jak hasło. Klucze bardzo upraszczają cały proces logowania oraz zwiększają bezpieczeństwo, ponieważ przy próbie logowania nie musimy podawać hasła. Klucze generujemy tylko raz, a następnie są one automatycznie zaciągane i porównywane.

Generowanie kluczy

W celu wygenerowania kluczy należy użyć poniższej komendy:

ssh-keygen

Opcjonalnie możemy podać hasło, które zabezpieczy nasz klucz prywatny przed niepożądanymi osobami. Jednak jeśli nie chcemy go podawać możemy kliknąć ENTER i przejść dalej.

Powyższa komenda wygeneruje nam dwa klucze. Klucz prywatny id_rsa oraz klucz publiczny id_rsa.pub. Znajdują się one w folderze ~/.ssh/ (dla windows C:\Users\nazwa_uzytkownika\.ssh). Należy pamiętać, że wygenerowane klucze są ze sobą powiązane (stanowią parę). Autoryzacja będzie poprawna tylko wtedy kiedy porównamy klucze z tej samej pary.

Wybór algorytmu szyfrowania oraz wielkości kluczy

Dodając do komendy parametr -t możemy wybrać algorytm szyfrujący.

ssh-keygen -t nazwa_algorytmu

Przykładowo:

ssh-keygen -t dsa

Powyższa komenda wygeneruje nam klucze przy użyciu algorytmu dsa. Dodatkowo przy użyciu parametru -b możemy również określić wielkość klucza.

ssh-keygen -b wielkość_w_bitach

Przykładowo:

ssh-keygen -t dsa -b 4096

Nasze klucze zostaną wygenerowane przy użyciu algorytmu dsa i będą mieć wielkość 4096 bitów. Moim zdaniem domyślne wartości są w zupełności wystarczające i jeśli nie ma potrzeby zmiany algorytmu czy wielkości klucza to nie musimy tego robić.

Wybór nazwy kluczy

Czasami będziemy chcieli określić nazwę kluczy na przykład w celu łatwiejszego rozpoznania do czego ich używamy. Domyślna nazwa to id_rsa oraz id_rsa.pub. Aby ustawić własną nazwę należy użyć parametru -f.

ssh-keygen -f nazwa

Przykładowo:

ssh-keygen -f 1024bits

Wygeneruje nam klucz prywatny o nazwie 1024bits oraz klucz publiczny 1024bits.pub.

Kopiowanie klucza publicznego na serwer

Po wygenerowaniu kluczy należy przesłać klucz publiczny na serwer. Umożliwi to późniejszą autoryzację. Warto zaznaczyć, że kluczy możemy również używać w wielu serwisach takich jak na przykład github. Aby skopiować plik na serwer należy użyć poniższej komendy (nie działa na windows) lub dowolnego innego sposobu na przykład kopiowania plików przez ssh:

ssh-copy-id -i ścieżka_do_pliku nazwa_użytkownika@adres_serwera

Należy pamiętać, że klucz publiczny dodajemy tylko dla konkretnego użytkownika. Więc jeśli w przyszłości będziemy chcieli zalogować się na innego użytkownika dla niego również będziemy musieli dodać klucz publiczny. Przykładowa komenda może wyglądać następująco:

ssh-copy-id -i ~/.ssh/id_rsa.pub 1024bits@192.168.0.1

Powyższa komenda skopiuje klucz publiczny id_rsa.pub do użytkownika 1024bits na serwerze o adresie 192.168.0.1. Wywołanie jej spowoduje wysłanie prośby o podanie hasła. Po poprawnej autoryzacji nastąpi przesłanie klucza.

Logowanie

W celu zalogowania się do serwera z wykorzystaniem kluczy ssh wystarczy użyć poniższej komendy:

ssh nazwa_użytkownika@adres_serwera

W naszym przypadku komenda będzie wyglądać następująco:

ssh 1024bits@192.168.0.1

Jeśli zdecydowaliśmy się na podanie hasła przy tworzeniu naszych kluczy to przy każdym logowaniu będziemy zmuszeni do jego wprowadzenia. Aby tego uniknąć możemy posłużyć się narzędziem jakim jest ssh-agent. Najpierw należy go włączyć za pomocą poniższej komendy:

ssh-agent -s

A następnie dodać do niego nasz klucz prywatny:

ssh-add ścieżka_do_klucza

W naszym przypadku będzie to:

ssh-add ~/.ssh/id_rsa

Po wykonaniu powyższych komend logowanie nie będzie już wymagało podawania hasła do naszego klucza chyba, że zrestartujemy nasz komputer. Jeśli skorzystamy z ssh-agent należy zwrócić uwagę na to kto ma dostęp do naszej maszyny na której pracujemy. Niepowołane osoby mogą wyrządzić spore szkody na serwerach/serwisach do których jest dodany nasz klucz.

Starsze wersje systemu windows

Trzeba mieć na uwadze, że ssh nie jest dostępne w starszych wersjach systemu windows. Więc aby z niego skorzystać należy użyć narzędzia jakim jest putty.