Dlaczego warto używać kluczy SSH?

Klucze SSH to są klucze symetryczne, generowane po stronie klienta (komputera łączącego się). Generator kluczy tworzy klucz prywatny (DLA CIEBIE), którego nigdzie nie powinieneś podawać, oraz klucz publiczny (DLA SERWERA), który instalujesz na serwerze/komputerze z systemem Uniksowym.
W teorii, każde hasło można złamać, a bardzo często używa się haseł prostych, a takie są naprawdę łatwe do złamania… Im trudniejsze hasło, tym czas na złamanie go rośnie.

Zaletą kluczy SSH jest nie tylko bezpieczeństwo, ale też to, że nie musisz pamiętać hasła! Bardzo ważne jest jednak to, abyś pilnował klucza prywatnego jak oka w głowie. Bez niego się nie połączysz z VPSem i nie mając dostępu do konsoli zdalnej (np. poprzez VNC – w Proxmox istnieje możliwość wystawienia VNC danego VPS-a/Kontenera, wtedy można uratować sytuację). 

Windows oraz PuTTYgen

PuTTYgen to generator kluczy SSH, które będziemy instalować na serwerze. Instalacja klucza na serwerze będzie wymagać przesłania go poprzez SCP albo przekopiowania go. Obie metody przedstawię poniżej na przykładzie swojego serwera domowego (192.168.1.108).
No to zaczynamy zabawę. 

Krok 0: Instalacja PuTTY

Tutorial ten pokrywa PuTTY – najpopularniejszego klienta obsługującego m.in. SSH. Bardzo go sobie cenię właśnie ze względu na to, że posiada on też aplikację PuTTYgen – generator kluczy
PuTTY możecie pobrać stąd: Download PuTTY: latest release (0.74) (greenend.org.uk)

Krok 1: PuTTYgen i generowanie kluczy

Uruchom PuTTYgen, pojawi Ci się okno takie, jak na zrzucie ekranu poniżej: 

Kliknij GENERATE i wykonuj losowe ruchy myszką, aż do zapełnienia się paska – tym sposobem zwiększasz przypadkowość kluczy 😊
Jeśli wszystko pójdzie dobrze, otrzymasz takie okno. NIE ZAMYKAJ GO!:

Zaloguj się na swojego VPSa na konto roota i następnie (zakładając, że jesteś w katalogu /root):

Sprawdź, czy istnieje plik autorized_keys w katalogu ~/.ssh komendą:

Sprawdź, czy istnieje plik autorized_keys w katalogu ~/.ssh komendą:
ls -l ~/.ssh/authorized_keys

Jeżeli plik nie istnieje (tak jak u mnie), otrzymasz w odpowiedzi:
ls: cannot access '/root/.ssh/authorized_keys': No such file or directory

W tym przypadku utwórz katalog .ssh, a w nim plik authorized_keys komendą:
mkdir ~/.ssh && touch ~/.ssh/authorized_keys

Sprawdź, czy plik powstał i wykonaj komendę
ls -l ~/.ssh/authorized_keys

Skoro już mamy plik authorized_keys
Otwórz plik autorized_keys w dowolnym edytorze, w moim przypadku będzie to Nano (najpopularniejszy):
nano ~/.ssh/authorized_keys

Zaznacz cały klucz publiczny w PuTTYgen (domyślnie powinien być już zaznaczony) i go skopiuj

Otwórz okno PuTTY, w którym masz otwarty edytor i wklej tam klucz – wystarczy, że klikniesz prawym przyciskiem myszy.
Może dziwnie to wyglądać (tak jak u mnie), ale nie przejmuj się, klucz jest w jednej linii, a nano domyślnie nie zawija tekstu 😊


Teraz Cltr+X, „y” i enter… Zapisany plik.

Zapisz swój klucz prywatny w bezpiecznym miejscu. Jeżeli w przyszłości planujesz łączyć się przy użyciu tego samego klucza prywatnego do innych serwerów, zapisz również klucz publiczny.
Możesz też dodać hasło do klucza, ale to już zależy od Ciebie. Dopóki nie jest to komputer współdzielony, a klucz przechowujesz w naprawdę bezpiecznym miejscu, możesz pominąć hasło, ale zawsze warto je dodać.

Krok 2: PuTTY, zapisanie sesji z kluczem SSH, łączenie się.

Teraz przetestujemy klucze, czy działa połączenie.

Uruchom PuTTY.
Z lewej kolumny wybierz odpowiednio:
Connection > SSH > Auth

Pojawi się okno ustawień autoryzacji po SSH. W polu „Private key file for authentication“ wskaż swój klucz prywatny:

Wróć do opcji „Session” na samej górze lewej kolumny kategorii, wpisz adres IP oraz port serwera, na którym zainstalowałeś klucz publiczny.
W moim przypadku jest to 192.168.1.108, port 22.
Następnie, nieco niżej w polu „Save Sessions”, nazwij sesję i kliknij Save:

Docelowo, pod „Default Settings”, powinieneś zobaczyć nową, nazwaną przez siebie sesję. W moim przypadku jest to „demo-ssh”

Kliknij na nową sesję, a następnie Open. Wprowadź swój login (root) i tyle. Powinieneś zobaczyć coś takiego, jak u mnie:

Gotowe! Klucz SSH jest zainstalowany poprawnie.

KROK 3 (opcjonalnie): wyłączenie logowania przy użyciu hasła.

Jeżeli obawiacie się, że ktoś Wam się włamie na serwer, to mając możliwość łączenia się za pomocą klucza SSH możecie wyłączyć możliwość logowania się przy użyciu hasła. Tym sposobem, osoba, która będzie chciała połączyć się z Waszym serwerem przy użyciu hasła, odbije się od niego z takim komunikatem:
Permission denied (publickey).

Zakładam, że udało się połączyć przy użyciu klucza SSH, więc teraz wykonaj następujące kroki:

  1. Zabezpiecz katalog ~/.ssh oraz plik ~./ssh/authorized_keys przed zapisem przez innych użytkowników:
    chmod 0700 ~./ssh
    chmod 644 ~/.ssh/authorized_keys

  2. Wybranym przez siebie edytorem (dla mnie będzie to Nano), otwórz plik sshd_config:
    nano /etc/ssh/sshd_config
  3. Znajdź linię zawierającą PasswordAuthentication
    Jeśli jest zakomentowana (#), to usuń hash, a następnie wartość „yes”, zmień na „no”, tak jak w przykładzie poniżej:
    PasswordAuthentication no
    Zapisz plik (Ctrl+X, y, enter).
  4. Wykonaj restart usługi SSH/SSHD:
    Dla systemów Debianowych: systemctl restart ssh
    Dla systemów RHEL (np. CentOS): systemctl restart sshd
  5. Rozłącz się, połącz ponownie przy użyciu zapisanej sesji.

Sprawdź, czy SSH odrzuca połączenia bez klucza, spróbuj się połączyć z sesji domyślnej. Powinienes otrzymać taki komunikat:

Jeśli otrzymałes taki komunikat, to gotowe. Klucze są zainstalowane na serwerze i robota skończona 🙂

By admin

Dodaj komentarz

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