−25%

na Windows przy płatności rocznej, do 31.10. Do planów

EQVPS

Jak utworzyć użytkownika sudo na VPS i przestać używać roota

Utwórz użytkownika sudo bez uprawnień roota na Ubuntu lub Debianie, daj mu klucz SSH, przetestuj i dopiero wtedy wyłącz logowanie roota — bez ryzyka zablokowania się.

Prawie każdy nowy VPS zaczyna się tak samo: logujesz się jako root, instalujesz kilka rzeczy i miesiąc później wciąż jesteś rootem. Działa, dopóki wklejony skrypt nie skasuje złego katalogu. Konfiguracja zwykłego użytkownika z sudo zajmuje pięć minut, a kolejność jest ważniejsza niż same polecenia — pomylisz ją i zablokujesz się na zewnątrz.

Oto bezpieczna kolejność dla Ubuntu 22.04/24.04 i Debiana 12.

1. Utwórz użytkownika

Jako root:

adduser deploy
usermod -aG sudo deploy

adduser pyta o hasło i kilka opcjonalnych danych (wystarczy wciskać Enter). Wybierz prawdziwe hasło: będziesz je wpisywać przy sudo. Na minimalnym obrazie Debiana najpierw uruchom apt install -y sudo, jeśli polecenia brakuje.

2. Daj mu swój klucz SSH

Najprościej skopiować autoryzowane klucze roota, zachowując właściwego właściciela:

rsync --archive --chown=deploy:deploy /root/.ssh /home/deploy

Jeśli wolisz ręcznie:

mkdir -p /home/deploy/.ssh
cp /root/.ssh/authorized_keys /home/deploy/.ssh/
chown -R deploy:deploy /home/deploy/.ssh
chmod 700 /home/deploy/.ssh
chmod 600 /home/deploy/.ssh/authorized_keys

Złe uprawnienia to klasyczny powód, dla którego logowanie kluczem po cichu nie działa. SSH ignoruje authorized_keys, do którego mogą pisać inni użytkownicy.

3. Przetestuj, zanim cokolwiek zmienisz

Nie zamykaj sesji roota. W nowym terminalu:

ssh -p 22 deploy@203.0.113.10
sudo whoami

Użyj swojego IP i portu — w planie NAT to osobisty port SSH z panelu. Jeśli sudo whoami wypisze root, wszystko gra. Jeśli logowanie się nie uda, wciąż masz okno roota, żeby to naprawić.

4. Wyłącz logowanie roota

Teraz zamknij drzwi. Zamiast edytować główną konfigurację, utwórz mały plik drop-in:

cat > /etc/ssh/sshd_config.d/10-hardening.conf <<'EOF'
PermitRootLogin no
PasswordAuthentication no
EOF
sshd -t && systemctl reload ssh

sshd -t najpierw sprawdza składnię. Zepsuta konfiguracja plus reload to sposób, w jaki ludzie lądują w konsoli. PasswordAuthentication no ma sens dopiero wtedy, gdy logowanie kluczem działa dla nowego użytkownika — co właśnie sprawdziłeś.

Otwórz jeszcze jeden terminal i potwierdź, że root jest odrzucany, a deploy wciąż wchodzi. Potem zamknij starą sesję roota.

5. Opcjonalnie: sudo bez hasła dla automatyzacji

Jeśli skrypt wdrożeniowy potrzebuje sudo bez pytania o hasło, daj mu dokładnie to i nic szerszego:

visudo -f /etc/sudoers.d/deploy
deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart myapp

Szczerze: NOPASSWD: ALL kusi, ale oznacza, że skradziony klucz równa się root. Ogranicz to do poleceń, które wykonuje automatyzacja.

Jeśli coś pójdzie nie tak

Konsola webowa w panelu nie zależy od SSH ani od firewalla. Zaloguj się przez nią, popraw plik w /etc/ssh/sshd_config.d/, przeładuj i gotowe. Cały proces odzyskiwania opisaliśmy w tekście jak wrócić do zablokowanego VPS.

Co dalej

Opcje dostępu dla każdego planu są w dokumentacji dostępu. Nawet Nano za $3 zasługuje na użytkownika bez roota — to najtańsze ulepszenie bezpieczeństwa, jakie istnieje.

FAQ

Dlaczego po prostu nie zostać przy roocie?

Wszystko, co uruchamiasz jako root, może zepsuć cały system — łącznie z literówką. Boty też najpierw próbują nazwy 'root', więc wyłączenie logowania roota usuwa najczęściej zgadywany cel. Imienny użytkownik z sudo daje chwilę namysłu przed każdym uprzywilejowanym poleceniem i zapis tego, co wykonano.

A jeśli się zablokuję?

Użyj konsoli webowej w panelu klienta. Działa nawet wtedy, gdy SSH jest zepsute albo firewall cię blokuje, więc możesz się zalogować i poprawić sshd_config. Dlatego właśnie testujesz nowego użytkownika przed zamknięciem sesji roota.

Czy włączyć sudo bez hasła?

Dla konta człowieka zostaw pytanie o hasło — to ostatnia linia obrony, jeśli wycieknie twój klucz SSH. Sudo bez hasła ma sens dla osobnego użytkownika wdrożeniowego używanego przez automatyzację, ograniczonego do poleceń, których naprawdę potrzebuje.

Na moim serwerze z Debianem nie ma polecenia sudo. Dlaczego?

Minimalne obrazy Debiana nie zawsze je zawierają. Zainstaluj je jako root przez 'apt install -y sudo', a potem dodaj użytkownika do grupy sudo.

Którego portu SSH używać?

Tego, który widzisz w panelu. Plany z dedykowanym IP używają portu 22 na twoim IP; plany NAT — twojego osobistego portu SSH.

Komentarze

Brak komentarzy. Bądź pierwszy.

Zostaw komentarz

Komentarze są moderowane przed pojawieniem się.