Klucze SSH dla serwerów w chmurze ⋆ ALexHost SRL

Test your skills on our all Hosting services and get 15% off!

Use code at checkout:

Skills
13.12.2024

Klucze SSH dla serwerów w chmurze

Klucze SSH (Secure Shell) są istotną częścią bezpiecznego zarządzania serwerami w chmurze. Oferują one bezpieczniejszą i wygodniejszą metodę uwierzytelniania użytkowników w porównaniu do tradycyjnych loginów opartych na hasłach. Korzystając z kluczy SSH, można ustanowić bezpieczne, szyfrowane połączenia z serwerami w chmurze, zapewniając, że tylko autoryzowani użytkownicy mogą uzyskać dostęp. W tym artykule dowiemy się, czym są klucze SSH, jak działają i jak skonfigurować je na serwerze w chmurze.

1. Czym są klucze SSH?

Klucze SSH to klucze kryptograficzne używane do uwierzytelniania klientów na serwerze SSH. Zamiast używać kombinacji nazwy użytkownika i hasła, które mogą być podatne na ataki typu brute-force, klucze SSH zapewniają bezpieczniejszy i bardziej zautomatyzowany sposób logowania się do zdalnych serwerów. Pary kluczy SSH składają się z dwóch części:

  • Klucz prywatny: Jest on bezpiecznie przechowywany na lokalnym komputerze i nigdy nie powinien być udostępniany.
  • Klucz publiczny: Jest on umieszczany na zdalnym serwerze. Serwer używa klucza publicznego do uwierzytelniania użytkowników na podstawie ich klucza prywatnego.

Podczas łączenia się z serwerem w chmurze protokół SSH sprawdza, czy klucz publiczny na serwerze jest zgodny z kluczem prywatnym przechowywanym na komputerze użytkownika. Jeśli dopasowanie zostanie zweryfikowane, połączenie zostanie nawiązane bez konieczności podawania hasła.

2. Dlaczego warto używać kluczy SSH dla serwerów w chmurze?

Klucze SSH mają kilka zalet w porównaniu z tradycyjnym uwierzytelnianiem opartym na hasłach:

  • Zwiększone bezpieczeństwo: Klucze SSH są znacznie trudniejsze do złamania niż hasła, ponieważ wykorzystują algorytmy kryptograficzne do uwierzytelniania. Dodatkowo, klucze SSH nie są podatne na ataki typu brute-force lub phishing, tak jak hasła.
  • Wygoda: Po skonfigurowaniu klucze SSH umożliwiają uwierzytelnianie bez użycia haseł, co ułatwia logowanie bez konieczności każdorazowego wprowadzania danych uwierzytelniających.
  • Automatyzacja: Wiele zautomatyzowanych procesów i skryptów opiera się na uwierzytelnianiu opartym na kluczach SSH, co sprawia, że zarządzanie serwerami w chmurze i wdrożeniami jest bardziej wydajne.
  • Kontrola dostępu: Klucze SSH mogą być dystrybuowane tylko do autoryzowanych użytkowników, co pozwala kontrolować, kto może uzyskać dostęp do serwerów w chmurze.

3. Jak działa uwierzytelnianie za pomocą klucza SSH

Oto uproszczona wersja działania uwierzytelniania za pomocą klucza SSH:

  1. Klient (komputer lokalny) wysyła żądanie połączenia z serwerem.
  2. Serwer sprawdza, czy klucz publiczny klienta pasuje do któregokolwiek z kluczy przechowywanych w pliku ~/.ssh/authorized_keys.
  3. Jeśli zostanie znalezione dopasowanie, serwer wysyła wyzwanie (zwykle zaszyfrowane dane) do klienta.
  4. Klient używa swojego klucza prywatnego do odszyfrowania wyzwania i wysłania odpowiedzi z powrotem do serwera.
  5. Serwer weryfikuje odpowiedź i jeśli jest poprawna, zezwala na dostęp do klienta bez hasła.

4. Jak wygenerować klucze SSH

Aby korzystać z uwierzytelniania za pomocą klucza SSH, należy najpierw wygenerować parę kluczy. Oto jak to zrobić:

W systemie Linux lub macOS:

  1. Otwórz terminal.
  2. Uruchom następujące polecenie, aby wygenerować nową parę kluczy SSH:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Oto, co oznaczają poszczególne opcje:

  • -t rsa: Określa algorytm RSA.
  • -b 4096: Generuje 4096-bitowy klucz w celu zwiększenia bezpieczeństwa.
  • -C “your_email@example.com”: Dodaje komentarz ułatwiający identyfikację klucza.
  1. Zostaniesz poproszony o wybranie lokalizacji do zapisania klucza. Domyślnie jest on przechowywany w katalogu ~/.ssh/. Naciśnij Enter, aby zaakceptować domyślną lokalizację.
  2. Możesz także ustawić hasło dla dodatkowego bezpieczeństwa, choć jest to opcjonalne. Jeśli nie chcesz używać hasła, naciśnij Enter, aby pozostawić je puste.

W systemie Windows:

Jeśli korzystasz z systemu Windows, możesz użyć klienta SSH, takiego jak PuTTYgen lub wbudowanej funkcji OpenSSH w systemie Windows 10 i nowszych:

  1. Otwórz PowerShell lub Wiersz polecenia.
  2. Uruchom to samo polecenie, co powyżej, aby wygenerować parę kluczy:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Po uruchomieniu polecenia proces jest taki sam jak w systemie Linux lub macOS.

5. Dodawanie klucza SSH do serwera w chmurze

Po wygenerowaniu pary kluczy SSH należy skopiować klucz publiczny na serwer w chmurze, aby włączyć uwierzytelnianie oparte na kluczach.

Metoda 1: Korzystanie z ssh-copy-id

W systemie Linux lub macOS można użyć polecenia ssh-copy-id, aby przesłać klucz publiczny na serwer:

ssh-copy-id user@your-server-ip

Polecenie to wyświetli monit o wprowadzenie hasła do serwera. Po wprowadzeniu hasła skopiuje klucz publiczny do pliku ~/.ssh/authorized_keys na serwerze.

Metoda 2: Metoda ręczna

Jeśli korzystasz z systemu Windows lub wolisz ręczne kroki, możesz ręcznie skopiować klucz publiczny:

  1. Otwórz plik klucza publicznego za pomocą edytora tekstu:
cat ~/.ssh/id_rsa.pub
  1. Skopiuj całą zawartość pliku.
  2. Połącz się z serwerem za pomocą sesji SSH opartej na haśle:
ssh user@your-server-ip
  1. Na serwerze utwórz katalog ~/.ssh, jeśli jeszcze nie istnieje:
mkdir -p ~/.ssh
  1. Otwórz plik authorized_keys:
nano ~/.ssh/authorized_keys
  1. Wklej skopiowany klucz publiczny do pliku i zapisz go.
  2. Ustaw odpowiednie uprawnienia:
chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh

Zapewnia to, że tylko użytkownik ma dostęp do odczytu i zapisu klucza i katalogu.

6. Wyłącz uwierzytelnianie hasłem (opcjonalne, ale zalecane)

Po skonfigurowaniu i uruchomieniu kluczy SSH zaleca się wyłączenie uwierzytelniania hasłem na serwerze, aby zapobiec nieautoryzowanemu dostępowi. Oto jak to zrobić:

  1. Otwórz plik konfiguracyjny SSH na serwerze w chmurze:
sudo nano /etc/ssh/sshd_config
  1. Znajdź następującą linię i zmień ją na no:
PasswordAuthentication no
  1. Zapisz plik i uruchom ponownie usługę SSH:
sudo systemctl restart sshd

Teraz tylko użytkownicy z prawidłowym kluczem SSH będą mogli się zalogować.

7. Zarządzanie kluczami SSH

  • Dodawanie wielu kluczy: Jeśli wielu użytkowników potrzebuje dostępu do serwera, można dodać ich klucze publiczne do pliku authorized_keys.
  • Usuwanie kluczy: Jeśli chcesz odebrać dostęp konkretnemu użytkownikowi, po prostu usuń jego klucz publiczny z pliku authorized_keys.

8. Wnioski

Korzystanie z kluczy SSH w celu uzyskania dostępu do serwera w chmurze jest jednym z najlepszych sposobów zabezpieczenia serwera i uniknięcia luk związanych z uwierzytelnianiem opartym na hasłach. Postępując zgodnie z krokami opisanymi w tym artykule, można wygenerować klucze SSH, dodać je do serwera w chmurze, a nawet wyłączyć logowanie hasłem w celu zwiększenia bezpieczeństwa.

Konfiguracja kluczy SSH może początkowo wymagać nieco więcej wysiłku, ale długoterminowe bezpieczeństwo i wygoda, jaką zapewniają, sprawiają, że warto podjąć ten wysiłek.

Test your skills on our all Hosting services and get 15% off!

Use code at checkout:

Skills