Kontakt
Bezpieczeństwo i SSH

Logowanie do serwera przez SSH z kluczem Ed25519

Skonfiguruj osobny klucz SSH, prześlij część publiczną na serwer i sprawdź logowanie bez zmieniania ustawień działającej usługi.

Redakcja NetCloud24Średni5 min czytaniaAktualizacja:

PRZYGOTOWANIE

Czego potrzebujesz

  • Klient OpenSSH z poleceniami ssh i ssh-keygen; ssh-copy-id na Linux lub pomoc administratora
  • Działające konto użytkownika na zdalnym serwerze z dostępem przez SSH
  • Aktualnie działająca sesja SSH do serwera (awaryjny dostęp)
  • Terminal w systemie Linux lub macOS

KROK 01

Zanim zaczniesz

Wszystkie czynności wykonujesz z poziomu terminala na swoim komputerze, zwanym dalej klientem. W przykładach używamy nazwy serwer.example.com oraz nazwy użytkownika admin. Przed rozpoczęciem zastąp je własnymi danymi: rzeczywistym adresem serwera i nazwą swojego konta.

Potrzebujesz działającego połączenia SSH z serwerem. Zachowaj otwartą osobną sesję do czasu potwierdzenia, że nowy klucz działa. Przed zaakceptowaniem klucza hosta porównaj jego odcisk z informacją uzyskaną od administratora innym zaufanym kanałem. Odcisk służy sprawdzeniu tożsamości serwera, a nie tylko usunięciu ostrzeżenia przy pierwszym połączeniu.

W całym poradniku nie zmieniamy pliku konfiguracyjnego sshd, nie modyfikujemy portu ani nie wyłączamy logowania hasłem. Dodajemy wyłącznie nową metodę uwierzytelniania. Klucz prywatny nie opuszcza komputera klienta i nie powinien być nigdy przesyłany przez sieć ani pokazywany osobom postronnym.

KROK 02

Utwórz oddzielny klucz

Klucz zapisujemy w nowym pliku, aby nie nadpisać istniejących kluczy, na przykład domyślnego id_ed25519. Parametr -f wskazuje ścieżkę docelową, a -C dodaje komentarz, który pomoże zidentyfikować klucz w pliku authorized_keys na serwerze. Polecenie poprosi o podanie passphrase – warto je ustawić, ponieważ chroni plik klucza prywatnego przed użyciem w razie jego przejęcia.

Jeśli plik o podanej nazwie już istnieje, ssh-keygen zapyta, czy go nadpisać. W razie wątpliwości sprawdź najpierw zawartość katalogu ~/.ssh, aby przypadkiem nie utracić istniejących kluczy. Plik publiczny (z rozszerzeniem .pub) możesz swobodnie przesyłać – klucz prywatny pozostaje wyłącznie u Ciebie.

Terminal Bash
ssh-keygen -t ed25519 -f ~/.ssh/nc24_serwer -C "dostep-do-serwera"

Polecenie tworzy dwa pliki: ~/.ssh/nc24_serwer (klucz prywatny) i ~/.ssh/nc24_serwer.pub (klucz publiczny). Po podaniu i potwierdzeniu passphrase klucz jest gotowy do użycia.

KROK 03

Dodaj klucz publiczny

Na komputerze z systemem Linux możesz użyć ssh-copy-id. Narzędzie dopisuje wskazany klucz publiczny do pliku authorized_keys zdalnego konta. W macOS może nie być zainstalowane; w takiej sytuacji administrator może dopisać zawartość pliku .pub do ~/.ssh/authorized_keys tego użytkownika na serwerze. Ustal wcześniej nazwę konta, aby nie dodać dostępu do innego użytkownika.

Nie przesyłaj zawartości klucza prywatnego. Typowe uprawnienia na serwerze to 700 dla katalogu ~/.ssh i 600 dla authorized_keys; pliki powinny należeć do właściwego użytkownika. Istotne jest przede wszystkim, aby katalog i plik nie były zapisywalne przez inne osoby. Nietypowe położenie pliku lub dodatkowe reguły dostępu wymagają sprawdzenia konfiguracji serwera.

Terminal Bash
ssh-copy-id -i ~/.ssh/nc24_serwer.pub admin@serwer.example.com

Polecenie kopiuje wskazany klucz publiczny na serwer i dopisuje go do pliku authorized_keys konta admin. Przy pierwszym użyciu program poprosi o hasło do zdalnego konta, aby uwierzytelnić operację.

KROK 04

Sprawdź logowanie w drugiej sesji

W drugim oknie terminala wykonaj próbę logowania z nowym kluczem. Parametr -i wskazuje plik, a IdentitiesOnly=yes ogranicza dobór tożsamości do skonfigurowanych kluczy zamiast wszystkich kluczy agenta. PreferredAuthentications=publickey wyłącza w tej próbie przechodzenie do logowania hasłem konta. Jeśli klucz ma hasło ochronne, klient może nadal o nie zapytać. To hasło odszyfrowuje lokalny klucz; nie jest hasłem konta na serwerze.

Nie używaj w tym teście opcji BatchMode – przy braku passphrase w agencie SSH logowanie od razu zakończy się błędem, co może mylnie sugerować problem z konfiguracją, podczas gdy wystarczy dodać klucz do agenta poleceniem ssh-add.

Terminal Bash
ssh -o IdentitiesOnly=yes -o PreferredAuthentications=publickey -i ~/.ssh/nc24_serwer admin@serwer.example.com

Jeśli konfiguracja jest poprawna, nastąpi logowanie bez pytania o hasło do serwera. Zostaniesz poproszony wyłącznie o passphrase chroniący lokalny klucz prywatny – o ile go ustawiłeś.

KROK 05

Gdy serwer odrzuca klucz

Komunikat Permission denied (publickey) oznacza, że serwer nie zaakceptował przedstawionego klucza. Sprawdź, czy używasz poprawnej nazwy konta na serwerze i czy klucz publiczny został skopiowany do właściwego pliku authorized_keys. Upewnij się, że plik .pub, który wysłałeś, pochodzi z tego samego zestawu co klucz prywatny – łatwo pomylić klucze, gdy ma się ich kilka.

Po stronie serwera plik authorized_keys musi należeć do logującego się użytkownika i nie może być zapisywalny przez innych. Dodanie opcji -v do polecenia ssh pokaże szczegółowy przebieg negocjacji – zwróć uwagę na linie informujące, które klucze są oferowane i czy zostały odrzucone. Nie publikuj pełnych logów z -v, ponieważ zawierają one nazwę hosta i konta.

Terminal Bash
ssh -v -o IdentitiesOnly=yes -i ~/.ssh/nc24_serwer admin@serwer.example.com

W szczegółowym zapisie połączenia sprawdź, jaki klucz klient próbuje przedstawić i czy serwer go przyjmuje. Nazwy komunikatów mogą różnić się między wersjami. Odrzucenie klucza może też wynikać z zasad dostępu, wyłączonego konta albo niedozwolonego algorytmu, więc sam komunikat nie wskazuje jeszcze jednej konkretnej przyczyny.

KROK 06

Wycofanie dostępu i dalsza administracja

Aby wycofać możliwość kolejnych logowań tym kluczem, administrator usuwa odpowiadający mu wpis z authorized_keys. Najpierw upewnia się, że zachowuje działającą metodę dostępu. Skasowanie pliku na jednym komputerze nie unieważnia jego kopii przechowywanych gdzie indziej. Usunięcie wpisu nie zamyka również już zestawionych sesji; ich zakończenie to odrębna decyzja administratora.

Warto stosować osobne klucze dla każdej osoby i każdego urządzenia – ułatwia to późniejsze selektywne blokowanie dostępu bez wpływu na innych użytkowników. W tym poradniku nie wyłączamy logowania hasłem, aby zachować awaryjną metodę logowania na wypadek problemów z kluczem.

Pytania i odpowiedzi

Czy mogę użyć jednego klucza na kilku serwerach?

Tak, ten sam klucz publiczny można dopisać do kilku kont. Warto jednak oddzielać klucze urządzeń i zakresy uprawnień: utrata jednego pliku nie powinna otwierać drogi do całej infrastruktury. Jeśli klucz prywatny zostanie przejęty, osoba posiadająca jego użyteczną kopię może próbować logować się do wszystkich kont, które go akceptują. Wycofaj taki klucz na każdym z tych serwerów.

Czy mogę zmienić passphrase po utworzeniu klucza?

Tak, bez tworzenia nowego klucza. Użyj polecenia ssh-keygen -p -f ~/.ssh/nc24_serwer. Program poprosi o stare i nowe hasło. Zmiana passphrase nie wpływa na działanie klucza publicznego ani na konfigurację na serwerze.

Co zrobić, jeśli zgubię klucz prywatny?

Natychmiast skontaktuj się z administratorem serwera, aby usunął odpowiadający mu klucz publiczny z pliku authorized_keys. Bez klucza prywatnego nie odzyskasz dostępu przez tę parę kluczy – musisz utworzyć nowy klucz i dodać jego publiczną część na serwerze.

Dokumentacja narzędzi

NETCLOUD24

Oprogramowanie do Twojej pracy

Przeglądaj programy do pobrania lub wybierz licencję w naszym sklepie.

Download →Sklep z oprogramowaniem →