Strona główna
» LINUX
»
Jak włączyć logowanie root SSH w systemie Linux za pomocą kluczy SSH
Jak włączyć logowanie root SSH w systemie Linux za pomocą kluczy SSH
Włącz logowanie SSH użytkownika root za pomocą klucza publicznego, dodając go do pliku root authorized_keys, ustawiając go , weryfikując konfigurację OpenSSH i przeładowując usługę. Umożliwi to użytkownikowi root logowanie się za pomocą klucza, blokując jednocześnie hasło i uwierzytelnianie interaktywne z klawiaturą. Definicje opcji PermitRootLogin prohibit-passwordznajdziesz w podręczniku OpenSSH sshd_config .
Ilustracja terminala przedstawia monit o zaufanie; przed zaakceptowaniem odcisku palca hosta należy go zweryfikować za pomocą zaufanego kanału.
Bezpośredni dostęp do roota daje akceptowany klucz i nieograniczoną kontrolę. Używaj go tylko w systemie, którym administrujesz, najlepiej za siecią prywatną lub zaporą sieciową. W przypadku rutynowych zadań zaloguj się jako nazwany użytkownik i użyj sudo. Pozostaw bieżącą sesję otwartą i upewnij się, że masz inną ścieżkę odzyskiwania przed zmianą ustawień zdalnego SSH.
Przed edycją serwera SSH
Połącz się z kontem, na którym można uruchomić program sudoi sprawdź, czy serwer OpenSSH jest uruchomiony.
Przygotuj parę kluczy SSH klienta. Skopiuj klucz publiczny (zazwyczaj plik z końcówką .pub); nigdy nie udostępniaj klucza prywatnego.
Nie ustawiaj hasła root wyłącznie dla SSH opartego na kluczu. Zablokowane hasło i dostęp za pomocą klucza publicznego to oddzielne elementy, chociaż zasady dotyczące kont dystrybucyjnych mogą wpływać na logowanie. W podręczniku zarządzania użytkownikami Ubuntu wyjaśniono, że samo zablokowanie hasła nie wyłącza dostępu do istniejącego klucza SSH.
Włącz logowanie SSH oparte na kluczu głównym
1. Połącz się jako zwykły administrator
Z poziomu terminala klienta połącz się z kontem, które ma już uprawnienia sudo:
ssh admin@server.example.com
Zastąp przykładowe wartości. Zweryfikuj nowy odcisk klucza hosta za pomocą zaufanego kanału przed jego zaakceptowaniem.
2. Dodaj swój klucz publiczny do konta roota
Na serwerze utwórz katalog SSH użytkownika root z ograniczonymi uprawnieniami, a następnie edytuj listę autoryzowanych kluczy:
Wklej cały klucz publiczny w jednym wierszu i zapisz. Nigdy nie wklejaj klucza prywatnego i zachowaj wszystkie istniejące wpisy. Następnie ogranicz prawa własności i uprawnienia:
Dodaj cały klucz publiczny jako jedną linię w pliku author_keys użytkownika root. Pokazany tutaj skrócony klucz jest jedynie wizualnym symbolem zastępczym.
3. Ustaw zasady logowania roota
Otwórz konfigurację serwera za pomocą edytora, na przykład:
sudoedit /etc/ssh/sshd_config
Znajdź dyrektywę active PermitRootLogini zmień ją na:
PermitRootLogin prohibit-password
Jest to bezpieczniejsze niż PermitRootLogin yes, które może zezwalać na hasła roota. Nie dodawaj duplikatu dyrektywy: OpenSSH używa pierwszej uzyskanej wartości, a dystrybucje mogą ładować Includepliki. Edytuj aktywne ustawienie i pozostaw niezwiązane z nim opcje uwierzytelniania bez zmian.
Podświetlony wiersz kontroluje root; pozostałe pokazane opcje uwierzytelniania to osobne ustawienia i powinny być zgodne z Twoją polityką.
4. Sprawdź poprawność konfiguracji przed jej zastosowaniem
Najpierw sprawdź, czy nie ma błędów składniowych:
sudo sshd -t
Brak wyniku oznacza, że sprawdzenie składni przebiegło pomyślnie. Napraw wszelkie zgłoszone błędy przed ponownym załadowaniem. Sprawdź wartość efektywną za pomocą:
sudo sshd -T | grep permitrootlogin
Sprawdź, czy na wyjściu jest napisane permitrootlogin prohibit-password. Jeśli nie, sprawdź dołączone pliki i odpowiednie Matchbloki. Podręcznik sshd definiuje to -tjako sprawdzenie składni i -Traport o efektywnej konfiguracji.
Przed zastosowaniem zmian uruchom polecenie sshd -t, a następnie sprawdź efektywne ustawienia logowania użytkownika root.
5. Załaduj ponownie usługę SSH
Użyj nazwy usługi swojej dystrybucji. Ubuntu i Debian powszechnie używają:
sudo systemctl reload ssh.service
Fedora, RHEL i wiele innych dystrybucji powszechnie używają:
sudo systemctl reload sshd.service
Jeśli przeładowanie nie jest obsługiwane, użyj systemctl restartodpowiedniej nazwy usługi i zachowaj otwartą oryginalną sesję. Podręcznik OpenSSH Ubuntu również zaleca uruchomienie sshd -tprzed ponownym uruchomieniem.
Po zakończeniu kontroli składni konfiguracji należy ponownie załadować demona SSH. Nazwy usług różnią się w zależności od dystrybucji.
6. Przetestuj dostęp do roota z drugiego terminala
Otwórz osobny terminal na kliencie i podaj klucz prywatny, który odpowiada zainstalowanemu kluczowi publicznemu:
ssh -i ~/.ssh/id_ed25519 root@server.example.com
Zmień ścieżkę klucza i nazwę hosta. Sprawdź wszystkie monity dotyczące klucza hosta i potwierdź, że sesja otwiera się jako root. Jeśli test się nie powiedzie, rozwiąż problem z oryginalnej sesji i pozostaw ją otwartą do czasu przywrócenia dostępu.
Przed zamknięciem sesji administratora przeprowadź test na nowym terminalu klienckim, używając pasującego klucza prywatnego.
Rozwiązywanie problemów z odmową logowania root
W przypadku Permission denied (publickey), sprawdź, czy pełny klucz publiczny jest wpisany /root/.ssh/authorized_keysi czy klient używa pasującego klucza prywatnego. Sprawdź ponownie właściciela i uprawnienia:
Sprawdź również wartość skuteczną PermitRootLogin, reguły AllowUsers/ DenyUsers, logi serwera i powłokę logowania roota. Unikaj zmiany tego ustawienia na yesskrót, ponieważ może to rozszerzyć zakres dozwolonych metod uwierzytelniania roota.
Właścicielem katalogu SSH użytkownika root powinien być użytkownik root, z uprawnieniami 700 dla katalogu i 600 dla author_keys.
Wyłącz logowanie SSH z uprawnieniami roota, jeśli już go nie potrzebujesz
Aby wyłączyć bezpośredni dostęp roota do SSH, zmień dyrektywę active na:
PermitRootLogin no
Uruchom sudo sshd -ti przeładuj odpowiednią usługę. To zablokuje bezpośrednie połączenie SSH z rootem, pozostawiając jednocześnie dostępne konto administratora. Samo zablokowanie hasła może nie wyłączyć logowania za pomocą klucza publicznego roota.
Ustaw PermitRootLogin na „nie”, zatwierdź i przeładuj. Pozostałe wyświetlane opcje uwierzytelniania są oddzielne i nie są wymagane w przypadku tej zmiany tylko dla konta root.