Jeśli administrujesz serwerem Ubuntu przez SSH, klucz publiczny musi być gotowy, zanim przejdziesz do uwierzytelniania hasłem. To jest punkt, który zbyt często widzę odwrócony: wzmacniamy sshdPonownie uruchamiamy usługę i okazuje się, że klucz nigdy nie został właściwie przetestowany.
W tym przewodniku zaczynamy od klucza ed25519Instalujemy klucz publiczny na serwerze, otwieramy drugą sesję, aby go przetestować, i dopiero wtedy wyłączamy hasła. Nie zajmuje to dużo czasu i zapobiega zablokowaniu dostępu.

Utwórz klucz SSH ed25519 na swoim komputerze
Na komputerze lokalnym wygeneruj klucz ed25519. To format, który wybrałbym dzisiaj do typowej administracji SSH.
ssh-keygen -t ed25519 -a 100 -C "admin@post"
Polecenie pyta, gdzie zapisać klucz. Jeśli nie masz jeszcze dedykowanego klucza, możesz zachować sugerowaną ścieżkę:
~/.ssh/id_ed25519
Dodaj hasło. Na laptopie lub komputerze, który opuszcza biuro, nie zostawiałbym klucza prywatnego bez ochrony. Hasło chroni klucz w przypadku skopiowania pliku lub włamania do komputera.
Następnie sprawdź, czy oba pliki istnieją:
ls -l ~/.ssh/id_ed25519 ~/.ssh/id_ed25519.pub
Plik bez rozszerzenia .pub to klucz prywatny. Nie wolno go wysyłać na serwer, kopiować do zgłoszenia ani udostępniać. Plik .pub jest kluczem publicznym, tym, który zainstalujesz w Ubuntu.
Zainstaluj klucz publiczny w systemie Ubuntu
Jeśli nadal masz dostęp do hasła, najprostszą metodą jest ssh-copy-id :
ssh-copy-id -i ~/.ssh/id_ed25519.pub użytkownik@serwer
Zastępować użytkownik poprzez docelowe konto SSH i serwer według adresu IP lub nazwy IN. Polecenie dodaje Twój klucz publiczny w ~/.ssh/authorized_keys po stronie serwera.
Jeśli ssh-copy-id nie jest dostępny, możesz to zrobić ręcznie z istniejącej sesji SSH:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
Wklej pojedynczą linię: całą zawartość pliku id_ed25519.pubNigdy nie wklejaj klucza prywatnego. Jeśli nie masz pewności, plik publiczny zazwyczaj zaczyna się od ssh-ed25519.
Przetestuj w drugiej sesji przed zamknięciem starej.
Nie zamykaj bieżącej sesji SSH. Otwórz drugi terminal i przetestuj połączenie za pomocą klucza:
ssh -i ~/.ssh/id_ed25519 użytkownik@serwer
Jeśli uzyskasz dostęp do serwera bez hasła do konta, klucz będzie działał. Jeśli połączenie nadal prosi o hasło użytkownika, najpierw sprawdź uprawnienia:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
ls -ld ~/.ssh
ls -l ~/.ssh/authorized_keys
W systemie Ubuntu sprawdź także logi SSH, jeśli klucz zostanie odrzucony:
sudo journalctl -u ssh -n 80 --no-pager
Nieprawidłowy właściciel folderu, klucz wklejony w kilku wierszach lub inne konto docelowe – to wszystko może zablokować uwierzytelnianie. Nie modyfikuj konfiguracji SSH, dopóki ten krok nie zostanie ukończony.
Przygotuj sshd przed wyłączeniem haseł
Przed zmianą konfiguracji należy wykonać kopię zapasową pliku głównego:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
Następnie sprawdź, czy znajdują się tam jakieś pliki /etc/ssh/sshd_config.d/ zdefiniuj już uwierzytelnianie za pomocą klucza lub hasła:
sudo grep -R "^PubkeyAuthentication|^PasswordAuthentication" /etc/ssh/sshd_config /etc/ssh/sshd_config.d/*.conf 2>/dev/null
W Ubuntu wolę utworzyć dedykowany plik niż modyfikować dziesięć wierszy w środku głównego pliku:
sudo nano /etc/ssh/sshd_config.d/99-disable-password.conf
Dodać:
Tak, uwierzytelnianie klucza publicznego
Hasło Nr uwierzytelnienia
Przed ponownym załadowaniem SSH przetestuj składnię. Nie podlega to negocjacjom na serwerze zdalnym.
sudo /usr/sbin/sshd -t
Jeśli polecenie nic nie zwróci, składnia jest prawidłowa. Jeśli wyświetli błąd, popraw go przed ponownym załadowaniem.
Przeładuj SSH bez odcinania dostępu
Po sprawdzeniu składni należy ponownie załadować usługę:
sudo systemctl przeładuj ssh
sudo systemctl status ssh --no-pager
Pozostaw pierwszą sesję otwartą. W drugim terminalu przetestuj ponownie połączenie oparte na kluczu:
ssh -i ~/.ssh/id_ed25519 użytkownik@serwer
Sprawdź również, czy połączenie bezkluczowe nie powiedzie się, jeśli masz konto testowe lub komputer, na którym klucz nie jest załadowany. Celem jest weryfikacja rzeczywistości, a nie tylko odczytanie wiersza konfiguracji.
Jeśli używasz protokołu SSH w systemie Ubuntu, miej ten przewodnik pod ręką. ponowne uruchamianie SSH w UbuntuJeśli masz lokalną zaporę sieciową, sprawdź również swoje zasady w artykule na ten temat UFW przed otwarciem serwera.
Kontrole zapobiegające blokadzie
- klucz prywatny pozostaje wyłącznie na Twoim komputerze;
- klucz publiczny rzeczywiście jest w
~/.ssh/authorized_keyswłaściwy użytkownik; - prawa są poprawne
~/.sshIautoryzowane_klucze; - druga sesja SSH na każdy klucz działa bez żadnych przerw;
sudo /usr/sbin/sshd -tnie zwraca żadnego błędu;- Zapora nadal zezwala na prawidłowy port SSH.
Jeśli utracisz dostęp SSH po zmianie, będziesz musiał skorzystać z konsoli odzyskiwania, KVM, dostępu do dostawcy chmury lub trybu ratunkowego. Ta metoda ma na celu zapobiegnięcie temu. Aby uzyskać bardziej kompleksową naprawę, zapoznaj się z poradnikiem. czysta ponowna instalacja SSH na Ubuntu.
Oficjalną dokumentację można znaleźć na stronie Ubuntu Serwer OpenSSHServerStrony referencyjne ssh-keygen I ssh-copy-id Szczegółowo opisują także zastosowane tutaj opcje.