Jak włączyć logowanie root na serwerze Linux
Na większości serwerów Linux bezpośrednie logowanie jako root przez SSH i SFTP jest domyślnie wyłączone. W tym poradniku dowiesz się, jak je włączyć, gdy jest potrzebne, i jak ponownie wyłączyć.
Czego potrzebujesz przed rozpoczęciem
- Serwera VPS lub dedykowanego z Linuxem.
- Użytkownika z uprawnieniami sudo.
- Klienta SSH. Więcej: Jak korzystać z PuTTY.
Użytkownik root ma nieograniczone uprawnienia, a jego nazwę znają wszystkie boty, które ciągle próbują odgadnąć hasła. Włączaj logowanie root tylko wtedy, gdy naprawdę jest potrzebne, używaj silnego hasła i po zakończeniu pracy wyłącz je ponownie.
Ustawienie logowania root
-
Połącz się z serwerem
Połącz się z serwerem przez SSH jako swój zwykły użytkownik.
-
Ustaw hasło root
W Ubuntu hasło root nie jest domyślnie ustawione, więc logowanie by się nie powiodło. Ustaw je komendą:
sudo passwd rootWpisz nowe hasło dwa razy. Podczas pisania znaki nie są wyświetlane, to normalne. Jeśli root ma już hasło, pomiń ten krok.
-
Otwórz plik konfiguracyjny SSH
Otwórz plik w edytorze:
sudo nano /etc/ssh/sshd_configNaciśnij Ctrl + W i wyszukaj PermitRootLogin. Linia zwykle wygląda tak:
#PermitRootLogin prohibit-password -
Zmień ustawienie PermitRootLogin
Usuń # na początku linii i zmień wartość:
PermitRootLogin yesAby ponownie zablokować logowanie root, zmień wartość na:
PermitRootLogin noJak zapisaćCtrl + O i Enter zapisuje plik, Ctrl + X zamyka edytor.
Na niektórych serwerach, np. Ubuntu, ustawienia mogą być nadpisywane przez pliki w /etc/ssh/sshd_config.d/. Sprawdź, czy nie ma tam innej wartości PermitRootLogin:
sudo grep -ri permitrootlogin /etc/ssh/sshd_config.d/ -
Sprawdź konfigurację i zrestartuj SSH
Najpierw sprawdź, czy w pliku nie ma błędów. Jeśli komenda nic nie wyświetli, wszystko jest w porządku:
sudo sshd -tNastępnie zrestartuj usługę SSH. Komenda zależy od systemu:
sudo systemctl restart sshsudo systemctl restart sshdNie zamykaj bieżącego oknaDopóki nie upewnisz się, że nowe logowanie działa, zostaw bieżącą sesję SSH otwartą. Jeśli coś pójdzie nie tak, cofniesz przez nią zmiany.
Czy się udało?
Sprawdź, jakiej wartości PermitRootLogin SSH faktycznie używa:
sudo sshd -T | grep permitrootloginNastępnie w nowym oknie spróbuj zalogować się jako root, zastępując ip_serwera adresem IP swojego serwera:
ssh root@ip_serweraCzęste pytania
Przy logowaniu jako root pojawia się „Access denied”
Sprawdź, czy ustawiłeś hasło root (krok 2) i czy w plikach w /etc/ssh/sshd_config.d/ nie ma linii PermitRootLogin lub PasswordAuthentication no, które nadpisują twoje ustawienie.
Błąd „Unit sshd.service not found”
W Ubuntu i Debian usługa SSH nazywa się ssh. Użyj komendy sudo systemctl restart ssh.
Czy jest bezpieczniejszy sposób?
Tak. Ustaw PermitRootLogin prohibit-password i loguj się kluczem SSH zamiast hasłem. Jeszcze lepiej pracować na osobnym użytkowniku i używać sudo.
Czy to ustawienie dotyczy też SFTP?
Tak. SFTP korzysta z tej samej usługi SSH, więc logowanie root przez WinSCP lub FileZilla działa według tego samego ustawienia.
Co dalej
Jeśli masz problemy, napisz do nas na czacie na żywo lub e-mailem.