Co to jest klucz SSH?

Autor: Opublikowano

W skrócie: Klucz SSH służy do potwierdzania tożsamości przy bezpiecznym łączeniu z serwerem lub usługą, np. repozytorium kodu. W praktyce korzystasz z pary: klucza publicznego, który przekazujesz usłudze, oraz prywatnego, który zostaje na twoim urządzeniu. Takie logowanie może zastąpić hasło do konta, ale wymaga ochrony klucza prywatnego.

Jak działa logowanie kluczem SSH?

SSH, czyli Secure Shell, to protokół umożliwiający bezpieczną komunikację z innym komputerem przez sieć. Używa się go m.in. do zarządzania serwerami, przesyłania plików przez SFTP oraz komunikacji z repozytoriami Git. Połączenie SSH jest szyfrowane zarówno przy logowaniu hasłem, jak i kluczem — klucz zmienia przede wszystkim sposób potwierdzania tożsamości.

Para kluczy składa się z dwóch matematycznie powiązanych elementów:

Podczas logowania program SSH używa klucza prywatnego do podpisania danych związanych z połączeniem. Serwer weryfikuje podpis za pomocą zapisanego klucza publicznego. Sam klucz prywatny nie jest przesyłany na serwer, a z klucza publicznego nie da się praktycznie odtworzyć prywatnego przy poprawnie dobranym współczesnym algorytmie.

Kiedy klucz SSH przydaje się zamiast hasła?

Jeśli administrujesz serwerem VPS, czyli wirtualnym serwerem prywatnym, możesz logować się kluczem zamiast wpisywać hasło konta. Przy pracy z Git klucz może potwierdzać twoją tożsamość podczas pobierania i wysyłania zmian. Nie oznacza to jednak automatycznie podpisywania commitów — to osobna funkcja wymagająca konfiguracji.

Przykład: dwie osoby opiekują się firmową stroną. Zamiast dzielić jedno hasło, każda tworzy własną parę kluczy, a administrator dodaje ich klucze publiczne do odpowiednich kont. Gdy jedna osoba kończy współpracę, można usunąć jej klucz bez wymiany klucza drugiej osoby. Osobne konta systemowe dodatkowo ułatwiają rozdzielanie uprawnień.

Klucze ograniczają ryzyko zgadnięcia hasła przez automatyczne próby logowania. Nie chronią jednak przed wszystkim: przejęcie urządzenia lub niechronionego klucza prywatnego może dać napastnikowi dostęp. Samo dodanie klucza nie wyłącza też logowania hasłem na serwerze.

Jak utworzyć parę kluczy SSH?

W systemie z zainstalowanym OpenSSH otwórz terminal. Najpierw sprawdź katalog .ssh w swoim katalogu domowym, aby nie nadpisać istniejących kluczy. Nową parę wykorzystującą współczesny algorytm Ed25519 utworzysz poleceniem:

ssh-keygen -t ed25519 -C "laptop-praca"

Opcja -C dodaje komentarz ułatwiający rozpoznanie klucza; nie nadaje uprawnień. Program zapyta o miejsce zapisu oraz hasło ochronne klucza, nazywane też passphrase. To hasło zabezpiecza plik prywatny i nie jest hasłem konta na serwerze. Starsze lub specyficzne środowiska mogą wymagać innego algorytmu — sprawdź wymagania dostawcy.

Przy domyślnej nazwie powstaną dwa pliki:

Symbol ~ oznacza katalog domowy użytkownika. Klucz publiczny zwykle ma postać jednej długiej linii zaczynającej się od ssh-ed25519. Skopiuj całą linię do pola kluczy SSH w panelu dostawcy. Na serwerze z OpenSSH dopisuje się ją zazwyczaj do pliku ~/.ssh/authorized_keys właściwego konta, bez usuwania istniejących wpisów. Serwer musi też mieć poprawnie ustawione prawa dostępu do katalogu i pliku.

Po dodaniu klucza przetestuj połączenie:

ssh -i ~/.ssh/id_ed25519 uzytkownik@adres-serwera

Zastąp nazwę użytkownika i adres własnymi danymi. Jeśli zmieniasz konfigurację dostępu, pozostaw dotychczasową sesję otwartą do czasu udanego logowania w drugim oknie.

Klucz użytkownika a klucz serwera

Przy pierwszym połączeniu SSH może pokazać odcisk klucza serwera, czyli jego skrócony identyfikator. To nie jest twój klucz użytkownika: służy do potwierdzenia, że łączysz się z właściwą maszyną. Porównaj odcisk z informacją uzyskaną niezależnym, zaufanym kanałem, np. od administratora lub z panelu dostawcy.

Ostrzeżenia o zmianie klucza serwera nie należy ignorować. Przyczyną może być legalna reinstalacja, ale również podszywanie się pod serwer. Najpierw wyjaśnij zmianę, zamiast bez sprawdzenia usuwać zapis z pliku known_hosts, w którym klient SSH pamięta rozpoznane serwery.

Jak bezpiecznie przechowywać i unieważnić klucz?

Zabezpiecz klucz prywatny silnym hasłem ochronnym i nie umieszczaj go w repozytorium, wiadomości ani zgłoszeniu do pomocy technicznej. Agent SSH to program, który może przechowywać odblokowany klucz w pamięci i używać go do podpisywania, ograniczając konieczność ponownego wpisywania hasła ochronnego.

Oddzielne klucze dla różnych urządzeń ułatwiają odbieranie dostępu po utracie jednego z nich. Jeśli podejrzewasz wyciek, usuń odpowiadający mu klucz publiczny ze wszystkich serwerów i usług, które go akceptują, a następnie wygeneruj nową parę. Zmiana hasła ochronnego lokalnego pliku nie unieważnia skradzionej kopii.

Zanim zaczniesz używać nowego klucza, sprawdź w panelu usługi, jak go usunąć i jak odzyskać dostęp po utracie urządzenia. Dzięki temu awaria laptopa nie odetnie cię od jedynej drogi zarządzania serwerem.

Zobacz też: Co oznacza www?

Przeczytaj także

Dowiedz się, jak PHP-FPM obsługuje żądania PHP, czym różni się od serwera WWW i jak dobrać ustawienia procesów do ruchu oraz zasobów hostingu.
Poznaj BIND, otwarte oprogramowanie serwera DNS: sprawdź, jak obsługuje domeny, czym różnią się jego role i kiedy warto samodzielnie go wdrożyć.
Poznaj najważniejsze Security Headers, ich rolę w ochronie strony oraz sposób sprawdzania i wdrażania nagłówków bez blokowania potrzebnych funkcji.