Klucze publiczne i prywatne w SSH – Jak logować się do VPS przez PuTTY bez podawania hasła – część druga

0

Ta część to kontynuacja pierwszej części poradnika, która znajduje się tutaj.

Krok drugi – łączenie się z serwerem VPS przy pomocy nazwy użytkownika i hasła.

Aby zalogować się do naszego zdalnego serwera VPS przy użyciu PuTTY wykonujemy następujące kroki:

  1. Otwieramy program PuTTY klikając dwukrotnie na jego wykonywalny plik o nazwie putty.exe
  2. Po otwarciu głównego okna programu wpisujemy w polu nazwa lub adres IP serwera adres IP (Host Name or IP address) naszego serwera np. 89.123.123.67 (nazwę serwera lub adres IP otrzymaliśmy od naszego dostawcy lub znamy go wtedy gdy jest to lokalny adres w naszej lokalnej sieci).
  3. Następnie wpisujemy numer portu na którym działa serwer SSH na naszym zdalnym serwerze VPS. Domyślnie jest to port 22 (jeśli został zmieniony to też będziemy mieli tę informację od naszego dostawcy)
  4. Po lewej stronie okna programu PuTTY widzimy drzewo z katalogiem następującej treści: Session, Terminal, Window, Connection. Dla nas istotny jest ostatni katalog „Connection” i pod nim „Data” klikając na nazwę „DATA” otworzymy po prawej stronie zakładkę w której będziemy mogli wpisać nazwę użytkownika (Auto-login username) który ma uprawnienia do połączenia się z serwerem SSH. Zwykle jest to użytkownik o najwyższych uprawnieniach tj. root lub jego odpowiednik w systemie (np. Ubuntu domyślnie daje uprawnienia root’a użytkownikowi, którego utworzyliśmy instalując system).
  5. Po wpisaniu nazwy użytkownika klikamy na guzik „Open” i otwiera się nowe okno sesji telnet w PuTTY.
  6. Jeśli jest to nasza pierwsza próba połączenia zostaniemy zapytani o klucz hosta i tzw.odcisk serwera – RSA2. To standardowe pytanie i komunikat, na który należy odpowiedzieć potwierdzając odcisk serwera.
  7. Aby potwierdzić należy nacisnąć „Tak i w oknie sesji telnet pojawi się nazwa użytkownika jako ten, który chce się zalogować, a następnie pole hasła do wpisania (password):
  8. Uwaga możemy skopiować hasło z naszego pliku tekstowego (Ctrl+C) i wkleić je do okna sesji telnet klikając raz z przyciśniętym prawym klawiszem myszy w miejscu migającego kursora w oknie sesji telnet lub wpisać hasło ręcznie. Zarówno podczas wklejania hasła jak i jego wpisywania nie będzie widoczna żadna litera ani słowo ani maska – nic. Po wklejeniu lub wpisaniu hasła należy zatwierdzić je klawiszem Enter.
  9. Jeśli logowanie było poprawne powinniśmy się znaleźć w katalogu użytkownika, który logował się na serwer SSH przy użyciu hasła.
  10. Jesteśmy na serwerze zdalnym w środowisku Unix. Terminal sesji telnet przypomina nieco okno „Command Prompt” systemu Windows. Jednak jesteśmy w innym środowisku i wpisywane komendy będą inne. Będziemy wpisywali komendy linuksowe w środowisku BASH (BASH – Bourne Again SHell)) więcej informacji tutaj: http://pl.wikipedia.org/wiki/Bash
  11. Jedną z komend Linux, która pozwala nam sprawdzić ścieżkę aktualnego katalogu, jest komenda „pwd”. Zatem aby sprawdzić gdzie się znajdujemy i potwierdzić, że jesteśmy w katalogu domowym naszego użytkownika, który zalogował się na zdalnego serwera VPS wpisujemy „pwd” po znaku zachęty.
  12. Powinniśmy zobaczyć scieżkę # /root lub # /nazwa_naszego_uzytkownika_ktory_sie_logowal np. # /jacek
  13. Aby sprawdzić zawartość tego katalogu wpisujemy komendą „ls” – odpowiadającą windowsowej „dir” lub jeszcze lepiej „ls –la”, opcja –la pozwala wyświetlić wszystkie pliki i katalogi łącznie z ukrytymi (mają one w systemie Unix kropkę przed nazwą)

UWAGA: Przypominam ponownie, że podczas wykonywania tych wszystkich kroków oraz w dalszej części realizowania komend samouczka nie należy zamykać sesji SSH w PuTTY i nie należy wylogowywać się jako zalogowany użytkownik o najwyższych uprawnieniach (root lub inny z grupy sudoers w Ubuntu). Najlepiej otworzyć dodatkowe okno w PuTTY, zalogować się jako root lub użytkownik z uprawnieniami root’a (sudoer) i trzymać to okno otwarte przez cały czas pracując w innym oknie podczas wykonywania komend samouczka.

Krok trzeci łączenie się z serwerem VPS przy użyciu pary kluczy SSH bez hasła

Nie wylogowując się z otwartego okna sesji PuTTY otwieramy nową sesję PuTTY poprzez zalogowanie się normalnie jako użytkownik z najwyższymi uprawnieniami podając hasło i przechodzimy do stworzenia katalogów i plików niezbędnych do logowania się na nasz serwer VPS przy użyciu kluczy SSH.

  1. Logujemy się na serwer zdalny przy użyciu nazwy użytkownika i hasła. Stara sesja jest otwarta w innym oknie. Pozostańmy zalogowani w tamtej sesji na wszelki wypadek.
  2. Jeśli podczas instalowania serwera został utworzony ukryty katalog „.ssh” to powinniśmy go widzieć, po wydaniu komendy „ls –la” po zalogowaniu się na serwer zdalny.jeśli nie został stworzony to musimy go stworzyć
  3. Aby stworzyć nowy katalog na serwerze wpisujemy w oknie terminala komendę „mkdir” oraz nazwę katalogu. W naszym przypadku będzie to komenda:
  4. # mkdir ~/.ssh – ta komenda utworzy ukryty katalog o nazwie „ssh” w katalogu domowym użytkownika, który jest zalogowany. W naszym przypadku to katalog /root. Zatem pełna ścieżka będzie wyglądała /root/.ssh. Znak tylda, który wpisywaliśmy w komendzie to uniksowy skrót, który oznacza ni mniej ni więcej „katalog domowy użytkownika”.
  5. Po stworzeniu katalogu tworzymy pusty plik w ukrytym katalogu ssh. Plik musi się nazywać „authorized_keys”. Ta nazwa pliku jest rozpoznawana automatycznie przez system autoryzacji przy pomocy pary kluczy, których będziemy używać do logowania się bez hasła.
  6. Aby utworzyć ten plik wydajemy następującą komendę:
  7. # touch ~/.ssh/authorized_keys
  8. Możemy sprawdzić czy plik został utworzony i czy jest pusty wydając następującą komendę:
  9. # cat ~/.ssh/authorized_keys
  10. Jeśli widzimy tylko wpisaną komendę i żadnej treści, to znaczy, że plik jest pusty
  11. Wracam na chwilę do otwarte okna PuTTYgen w którym generowaliśmy klucze publiczny i prywatny. Używając komendy Ctl+C kopiujemy zawartość okna z wygenerowanym kluczem publicznym i przechodzimy do otwartego okna terminala na naszym serwerze.
  12. Wpisujemy po znaku zachęty następującą komendę, która pozwoli nam edytować plik „authorized_keys”
  13. # vi ~/.ssh/authorized_keys (jeśli jesteśmy w Ubuntu będą nam potrzebne uprawnienia najwyższego poziomu więc wpiszemy „sudo vi ~/.ssh/authorized_keys”
  14. Po otwarciu pliku „authorized_keys” w oknie edytora tekstów na naszym serwerze (Vi– jest najbardziej popularnym edytorem w systemie Unix. Więcej informacji tutaj: http://pl.wikipedia.org/wiki/Vi_(program)) wchodzimy do trybu edycji naciskając na klawiaturze klawisz „i”. Na dole okna powinna się pojawić informacja, że jesteśmy w trybie wstawiania znaków (insert). Stajemy na górze w pierwszej linii tekstu i prawym przyciskiem myszy wklejamy skopiowany wcześniej tekst klucza publicznego. Pojawi się dosyć długi ciąg znaków zakończony naszym komentarzem.
  15. Wychodzimy z trybu wstawiania (edycji) edytora Vi naciskając klawisz „esc”. A następnie wpisujemy ciąg ”:wq”. Ważne jest aby dwukropek poprzedzał komendę w – write oraz q – quit
  16. Po zatwierdzeniu klawiszem Enter powinniśmy wyjść z edycji pliku „authorized_keys”
  17. Sprawdzamy czy plik zawiera wklejony tekst. Wydajemy komendę:
  18. # cat ~/.ssh/authorized_keys i jeśli widzimy ten sam cią znaków, który widnieje w oknie generatora kluczy SSH – PuTTYgen to znaczy, że poprawnie zapisaliśmy klucz publiczny.
  19. Zmieniamy uprawnienia do pliku authorized_keys oraz do katalogu .ssh komendami
  20. # chmod 0700 ~/.ssh
  21. # chmod 0644 ~/.ssh/authorized_keys
  22. Jesteśmy gotowi do przejścia do kolejnego kroku czyli zmiany konfiguracji serwera SSH w taki sposób aby uniemożliwić logowanie się przy pomocy nazwy użytkownika i hasła i pozostawić jedynie możliwość logowania się za pomocą pary kluczy SSH poprzez PuTTY.

Krok czwarty – konfiguracja pliku „sshd_config” i blokowanie logowania się przy użyciu nazwy i hasła.

W tym kroku zabronimy logowania się przy użyciu nazwy użytkownika i hasła i pozwolimy na logowanie się zdalne do naszego serwera VPS jedynie poprzez parę kluczy SSH publiczno-prywatnych poprzez PuTTY w Windows.
Przypominam tylko dla porządku, że powinniśmy mieć otwartą co najmniej jedną sesję w innym oknie PuTTY, tak aby po dokonaniu zmian w tym kroku, jeśli coś pójdzie nie tak, nie zostać wylogowanym z serwera bez możliwości zalogowania się na niego zdalnie.
Krok pierwszy po zalogowaniu się w nowej sesji PuTTY:

  1. W oknie terminala zdalnego serwera otwieramy plik konfiguracyjny serwera SSH wydając poniższą komendę:
  2. # vi /etc/ssh/sshd_config lub w przypadku Ubuntu „sudo vi /etc/ssh/sshd_config”
  3. Wchodzimy w tryb wstawiania (edycji) „i”Znajdujemy linijkę „PasswordAuthentication”
  4. Zwykle będzie to wyglądało tak:
  5. […]
  6. PasswordAuthentication yes
  7. Zmieniamy słówka „yes” na „no”
  8. BARDZO WAŻNA UWAGA DLA POCZĄTKUJĄCYCH – aby konfiguracja zadziałała należy zawsze usunąć znak hash (#) na początku linijki kodu który ma być wykonany- w tym wypadku przez server ssh – (To uwaga, którą przekazał mi czytelnik naszego portalu #Sabattos — dziękuję za tę uwagę).
  9. Znajdujemy następną linijkę
  10. UsePAM yes
  11. Zmieniamy na:
  12. UsePAM no
  13. Wychodzimy z trybu edycji i zapisujemy plik oraz wychodzimy z edytora Vi. Aby tego dokonać wydajemy kolejno następujące komendy:
  14. Naciskamy klawisz „esc” a potem
  15. Shift „:” i „w” oraz „q” i zatwierdzamy klawiszem Enter
  16. Cała komenda
  17. i
  18. :wq
  19. Enter
  20. Program vi powinien zostać zamknięty a my będziemy widzieli mrugający kursor zachęty.
  21. Aby sprawdzić czy zmiany zostały wykonane i zapisane wydajemy komendę:
  22. # cat /etc/ssh/sshd_config
  23. Jeśli widzimy że PasswordAuthentication i UsePAM są z parametrem „no” to jesteśmy gotowi do przedostatniego kroku czyli restartowania serwera SSH, tak aby zmiany zostały przyjęte przez nasz zdalny serwer SSH.

Pamiętajmy, żeby inne otwarte okna sesji PuTTY pozostały otwarte i żebyśmy byli zalogowani w tamtych sesjach.
A zatem wykonujemy ostatni krok przed sprawdzeniem czy wszystko działa. Restartujemy serwer SSH. Aby to zrobić należy wydać następującą komendę w oknie sesji PuTTY na zdalnym serwerze VPS.
# service sshd reload

lub
# service sshd restart

dla Ubuntu komenda będzie wyglądała:
# sudo service ssh restart

Dalsze kroki

Po restarcie serwera SSH na zdalnym VPS-ie zalogujmy się w nowym oknie sesji SSH w programie PuTTY.
Wpiszmy adres IP naszego zdalnego serwera. W oknie DATA jako użytkownika (Auto-login username)podajmy nazwę użytkownika o najwyższych przywilejach „root” lub w przypadku Ubuntu „nazwa_naszego_uzytkownika” np. jacek
Następnie w zakładce SSH > Auth wskażmy katalog (miejsce) w którym jest przechowywany nasz prywatny plik SSH, który wygenerowaliśmy wspólnie z publicznym plikiem (jego zawartość umieściliśmy wewnątrz pliku „authorized_keys” na zdalnym serwerze.

Po podaniu ścieżki do pliku z kluczem prywatnym (tym z rozszerzeniem .ppk) klikamy na guzik „Open” w sesji PuTTY i jeśli wszystko wykonaliśmy poprawnie powinniśmy po chwili zobaczyć otwarte okno sesji na naszym zdalnym serwerze VPS z informacją, że zostaliśmy zalogowani przy użyciu klucza SSH.

Gratuluję! Teraz już pozostaje kosmetyka, tzn. zapisanie tych ustawień w PuTTY, tak abyśmy mogli logować się bez wpisywania za każdym razem adresu IP serwera zdalnego oraz podawania nazwy użytkownika i miejsca w którym przechowywany jest plik prywatnego klucza SSH na naszym komputerze.

Aby zapisać te ustawienia klikamy prawym przyciskiem myszy na ramkę sesji PyTTY (tam gdzie widzimy napis z adresem naszego serwera oraz – PuTTY, a po prawej zwyczajowe ikonki systemu Windows). Z menu które się pokaże wybieramy „Change Settings…”, a następnie wpisujemy jakąś swoją nazwę (np. „Samouczek”).

W oknie poniżej napisu „Saved session” sesji klikamy „Save”, „Apply” i wracamy do sesji PuTTY. Dla pewności otwieramy nową sesję PuTTY i sprawdzamy czy mamy zapisaną naszą nową konfigurację PuTTY. Wybieramy nazwę naszej zapisanej konfiguracji np.”Samouczek” i jeśli zalogowaliśmy się poprawnie bez podawania czegokolwiek znaczy to, że udało nam się zakończyć z powodzeniem konfigurowanie PuTTY do logowania się na zdalny serwer VPS tylko poprzez klucze SSH bez podawania hasła.

Możemy również sprawdzić czy nasz zdalny serwer pozwala zalogować się poprzez podawanie nazwy użytkownika i hasło. W tym celu po zamknięciu wszystkich sesji PuTTY otwórzmy nowe okno i postarajmy się zalogować podają adres IP zdalnego serwera. Po otwarciu terminala łączenia się podajmy nazwę użytkownika i zobaczmy czy serwer odrzuci próbę logowania podając jako powód niewłaściwy / nieakceptowany sposób logowania się.
W ten sposób mamy nie tylko łatwiejszy ale również bardziej bezpieczny sposób logowania się na nasz zdalny serwer VPS przy użyciu pary kluczy SSH oraz programu PuTTY w Windows.

Pierwsza część poradnika znajduje się tutaj.

PODZIEL SIĘ

BRAK KOMENTARZY

ZOSTAW ODPOWIEDŹ