Dostęp SSH za pomocą kluczy RSA

Mała instrukcja organizowania dostępu SSH do zdalnego serwera Linux. Przypomnij sobie, że standardową metodą uwierzytelniania użytkownika na serwerze Unix (Linux, FreeBSD) podczas uzyskiwania dostępu przez SSH jest para login i hasło. Ale wejście do nich nie zawsze jest wygodne, szczególnie jeśli jest wiele takich serwerów. Istnieje alternatywa dla tego typu dostępu - organizowanie dostępu SSH za pomocą pary kluczy RSA (publiczny i prywatny) i hasła (które, ogólnie rzecz biorąc, jest opcjonalne).

W tym artykule rozważymy użycie tego typu dostępu, który można wdrożyć za pomocą jednego z najpopularniejszych programów do pracy na SSH   - PuTTY.

Do pracy potrzebujemy następujących narzędzi z rodziny PuTTY:

  • puttygen.exe - pakiet tworzenia par kluczy
  • putty.exe - sam terminal ssh
  • pscp.exe - narzędzie do kopiowania plików scp

Wygeneruj parę kluczy RSA

Aby to zrobić, uruchom narzędzie PuTTYgen, upewnij się, że typem klucza jest „SSH-2 RSA„I naciśnij przycisk”Generuj„.

Następnie rozpoczyna się generowanie pary kluczy, a aby wygenerować losową sekwencję, musisz losowo przeciągnąć myszą wokół paska postępu.

W terenie „Kluczowy komentarz” możesz podać opis klucza (będzie wyświetlany podczas uwierzytelniania klucza).

W terenie „Kluczowe hasło” i „Potwierdź hasło” określa hasło do aktywacji klucza (będzie wymagane podczas łączenia). Jeśli nie ustawisz hasła, połączenie zostanie wykonane bez hasła: jest to bardzo wygodne, ale niezbyt bezpieczne, ponieważ aby uzyskać dostęp do serwera, osoba atakująca musi tylko ukraść plik z kluczem prywatnym od Ciebie (dlatego zaleca się zachowanie klucza prywatnego w tajemnicy: na zewnętrznym dysku USB, zaszyfrowanym woluminie itp.).

Następnie naciskamy przyciskiZapisz klucz publiczny„I”Zapisz klucz prywatny„I zapisz odpowiednio klucze publiczne i prywatne w pliku o nazwach, na przykład:”public.key„I”private.ppk„.

Skonfiguruj klucz publiczny na serwerze Linux.

Plik klucza publicznego ”public.key»Musisz skopiować na serwer Linux, z którym chcesz się połączyć. Aby to zrobić, użyj narzędzia pscp.exe. Polecenie kopiowania pliku będzie wyglądać mniej więcej tak:

pscp c: \ key \ public.key [email protected]: / tmp / foo

Następnie skopiowany klucz należy umieścić w katalogu osobistym użytkownika w pliku ~ / .ssh / autoryzowane_klucze .

Aby to zrobić, przejdź do serwera przez SSH (jak zwykle) i uruchom następującą komendę:

$ ssh-keygen -i -f /tmp/foo/public.key >> /home/myuser/.ssh/authorized_keys

gdzie myuser, nazwa użytkownika, który będzie mógł się zalogować przy użyciu tego klucza.

Nie zapomnij również upewnić się, że autoryzacja klucza jest włączona na serwerze. W tym celu w pliku / etc / ssh / sshd_config należy odkomentować:

Uwierzytelnianie RSA tak
Pubkey Uwierzytelnienie tak
AuthorizedKeysFile .ssh / Author_keys

Łączymy się przez SSH za pomocą klucza

Uruchamiamy PuTTY i po lewej stronie ekranu przejdź do Połączenia -> SSH -> Auth.

Znajdź linię Prywatny klucz plik dla uwierzytelnianie », następnie kliknij przycisk „Przeglądaj” i określ nasz plik za pomocą klucza prywatnego „private.ppk”.
Następnie na karcie głównej podaj nazwę / adres IP naszego serwera Linux i rozpocznij połączenie. Po czym system jak zwykle poprosi o podanie loginu, a następnie hasła klucza (jeśli został określony). Jeśli hasło nie zostanie określone, konsola serwera otworzy się bez hasła.
Aby nie wchodzić w ustawienia Auth i określać plik klucza przy każdym połączeniu, ustawienia można zapisać, do tego służą przyciski Zapisz (zapisz ustawienia PuTTY) i Ładuj (załaduj ustawienia) na karcie głównej. Wszystkie zapisane ustawienia Putty są przechowywane w rejestrze, dzięki czemu można w zasadzie przenieść je z jednego komputera na drugi, po prostu eksportując / importując część rejestru (więcej szczegółów znajduje się w artykule Przenoszenie ustawień PuTTY).

Ponadto, aby nie wprowadzać ręcznie nazwy użytkownika za każdym razem, login użytkownika można również zapisać w PuTTY (Connection \ Data \ Auto-login username).

Jeśli to nie zadziała, analizujemy dziennik /var/log/auth.log na serwerze.