SSH i klucze DSA, czyli logowanie bez wpisywania hasła

Dzisiaj opiszę bardzo przydatną i praktyczną poradę, dotyczącą logowania się na serwer za pomocą SSH. W codziennej pracy możemy się logować na dany serwer nawet po kilkadziesiąt razy, a za każdym razem musimy wpisać hasło. Jest to oczywiście mało wygodne i czasochłonne. Rozwiązaniem tego problemu jest skorzystanie z pary kluczy DSA.

Zakładam, że korzystamy z Windowsa i Putty do logowania się na serwer z Linuksem. Ze strony PuTTY należy ściągnąć PuTTY, PuTTYgen i Pageant. W pierwszym kroku należy wygenerować klucze DSA na serwerze, do którego chcemy się wygodnie logować. Uruchamiamy Putty i logujemy się na serwer tak jak zwykle (cieszymy się faktem, że ostatni raz wpisujemy hasło :)). W katalogu domowym tworzymy folder .ssh z prawami dostępu 700.

mkdir .ssh
chmod 700 .ssh

Następnie uruchamiamy polecenie odpowiedzialne za wygenerowanie klucza:

ssh-keygen -t dsa

Zostaniemy poproszeni o podanie nazwy pliku w którym zostanie zapisany klucz(zostawiamy domyślne), oraz passphrase(hasło zabezpieczające klucz). Passphrase powinno być różne od hasła dostępu do konta. Jeżeli ktoś wszedłby w posiadanie tego klucza, jedyne co dzieli go od zalogowania się na serwer jest właśnie podany passphrase. Można również ustawić pusty passphrase, co jest dość niebezpieczne, ale wygodne. Szczegółowe wyjaśnienia znajdą się pod koniec artykułu. Dopisujemy klucz publiczny id_rsa.pub do pliku authorized_keys.

cat id_dsa.pub >> authorized_keys

Możemy teraz ustawić odpowiednie prawa dla wszystkich plików w katalogu:

chmod 600 *

To by było na tyle jeśli chodzi o pracę na serwerze. Ściągamy plik id_dsa na komputer lokalny. Otwieramy PuTTYgen, z menu wybieramy Actions->load. Wybieramy nasz plik id_dsa i wpisujemy odpowiedni passphrase. Zapiszemy teraz klucz w formacie zrozumiałym dla Putty. Klikamy save public key i zapisujemy pod nazwą moja_nazwa.pub, analogicznie save private key pod nazwą moja_nazwa.ppk. Pliki umieszamy dowolnym katalogu, np. w katalogu z Putty, lub naszym katalogu domym w podfolderze .ssh.

Ostatnim krokiem jest ustawienie Putty tak, aby korzystał z wygenerowanych kluczy. Uruchamiamy Putty i przechodzimy do edycji sesji połączenia z naszym serwerem – klikamy na sesję, a następnie przycisk Load. W zakładce Connection->SSH->Auth w polu Private key file for authentication wybieramy przed chwilą zapisany plik moja_nazwa.ppk. Pamiętajmy, aby wrócić do zakładki Session i klikąć Save. Już teraz powinniśmy móc się zalogować na serwer korzystając z naszego klucza prywatnego. Zamiast hasła wystarczy podać passphrase.

putty_auth

Naszym celem było logowanie się bez podawania hasła, jednak dalej przy każdym logowaniu musimy podawać nieszczęsny passphrase. Aby tego uniknąć musimy skonfigurować Pageant. Jest to narzędzie które przechowuje klucze prywatne w postaci zdekodowanej w pamięci, tak abyśmy nie musieli za każdym logowaniem podawać passphrase do klucza. Jednym sposobem jest każdorazowo uruchamianie Pageant i dodanie klucza z poziomu menu dostępnego w programie. Lepszym sposobem jest utworzenie skrótu do Pageant, który automatycznie załaduje wybrany klucz. Tworzymy zwykły skrót do Pageant, edytujemy jego właściwości, w polu element docelowy po spacji dopisujemy lokalizację naszego klucza prywatnego. Wygląda to następująco:

C:\Programy\putty\pageant.exe C:\Programy\putty\moj_klucz.ppk

Uruchamiamy Pageant poprzez utworzony skrót, zostaniemy poproszeni o podanie passphrase. Od tej chwili klucz rezyduje w pamięci i nie ma potrzeby już więcej wpisywać passphrase. Taki skrót możemy umieścić w autouruchamianiu Windowsa, lub uruchamiać za każdym razem jak rozpoczynamy pracę na serwerze. Tak skonfigurowane Putty pozwala również na korzystanie z TortoiseSVN bez podawania hasła, o ile korzystamy z protokołu SSH.

Chciałbym jeszcze wrócić do kwestii pustego passphrase. Wiemy już kiedy musimy go podawać, w optymistycznym przypadku jest to raz na dzień (pracy). Ustawiając pusty passphrase nie musimy go podawać w ogóle. Rozwiązanie bardzo wygodne, ale musimy się liczyć z konsekwencjami. Każdy kto wejdzie w posiadanie naszego klucza prywatnego będzie w stanie się zalogować na serwer bez znajomości hasła/passphrase.

W przeszłości, na jednym z serwerów napotkałem problem z logowaniem się za pomocą kluczy DSA. Rozwiązaniem było zmodyfikowanie klucza publicznego po stronie serwera. Z końcówki pliku authorized_keys (zakładam, że plik posiada tylko jeden klucz, tj. jedną linijkę) musimy usunąć część nazwy domeny, tak aby końcówka pliku wyglądała tak jak nazwa użytkownika i domeny w tytule okienka z Putty.

putty_keys

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *