Многие начинающие системные администраторы подключаются к серверу напрямую под пользователем root. Кажется, что это удобно — сразу получаешь полный доступ. Но это серьёзная ошибка безопасности. В этой статье мы разберём, почему нельзя использовать root, и покажем пошаговую инструкцию по настройке безопасного доступа.
Root — это суперпользователь с неограниченными правами. Это как ходить по серверу с «ключом от всего»:
| Проблема | Последствие |
|---|---|
Ошибка в команде rm -rf / |
Полное удаление системы |
| Взлом SSH с root | Злоумышленник получает полный контроль |
| Brute-force атаки | Легче угадать «root», чем «alex» |
| Случайный запуск вредоносного скрипта | Полный доступ для злоумышленника |
Root-пользователь — первое, что пытаются угадать хакеры при атаке на SSH. А когда получают доступ — получают полный контроль над сервером без дополнительных проверок.
Создать обычного пользователя с sudo-правами. Это тот же root, но с дополнительным слоем защиты:
На примере нашего сервера 31.42.190.97 мы провели полную настройку безопасности SSH.
ssh -p 22022 [email protected] → Вход под root разрешён → Доступ по SSH-ключу → Полный контроль без дополнительных проверок
ssh -p 22022 [email protected] → Вход под обычным пользователем admin → Требуется sudo для admin-команд → Root-доступ полностью заблокирован
admin с домашней директориейwheel (sudo на AlmaLinux)Пока root ещё разрешён, подключаемся к серверу:
ssh -p 22022 [email protected]
Создаём пользователя с домашней директорией и оболочкой bash:
useradd -m -s /bin/bash admin
Добавляем пользователя в группу wheel (это группа sudo на AlmaLinux/RHEL):
usermod -aG wheel admin
Настраиваем sudo без пароля для удобства:
echo 'admin ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/admin chmod 440 /etc/sudoers.d/admin
Создаём директорию для ключей и файл authorized_keys:
mkdir -p /home/admin/.ssh chmod 700 /home/admin/.ssh touch /home/admin/.ssh/authorized_keys chmod 600 /home/admin/.ssh/authorized_keys
Добавляем ваш публичный ключ:
# На вашем компьютере узнайте публичный ключ: cat ~/.ssh/id_ed25519.pub # На сервере добавьте ключ: echo 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5...' >> /home/admin/.ssh/authorized_keys
Устанавливаем владельца:
chown -R admin:admin /home/admin/.ssh
Откройте новую вкладку терминала и проверьте вход:
ssh -p 22022 [email protected]
Проверьте права sudo:
sudo whoami # Должно вывести: root
Если всё работает — продолжаем.
Теперь отключаем вход под root.
Сначала удаляем или отключаем файл, который может разрешать root:
rm -f /etc/ssh/sshd_config.d/01-permitrootlogin.conf
Редактируем конфигурацию SSH:
nano /etc/ssh/sshd_config
Находим и изменяем параметры:
PermitRootLogin no PasswordAuthentication no
Перезапускаем SSH:
systemctl restart sshd
Важно: Не закрывайте текущую сессию root, пока не проверите доступ под admin!
После настройки ваш workflow изменится совсем немного.
# Входите как admin (НЕ root!) ssh -p 22022 [email protected]
Все команды, требующие прав администратора, выполняются с приставкой sudo:
# Вместо: apt update # Теперь: sudo apt update # Вместо: systemctl restart nginx # Теперь: sudo systemctl restart nginx # Вместо: nano /etc/nginx.conf # Теперь: sudo nano /etc/nginx.conf
sudo не спрашивает пароль (мы это настроили), поэтому разницы почти нет — просто добавляете sudo перед командой.
# На сервер (ваш файл → сервер) scp -P 22022 local-file.txt [email protected]:~/ # С сервера (сервер → ваш компьютер) scp -P 22022 [email protected]:/var/log/syslog ./
После настройки обязательно проверьте, что всё работает правильно.
ssh -p 22022 [email protected] "whoami"
Ожидаемый результат: admin
ssh -p 22022 [email protected] "sudo whoami"
Ожидаемый результат: root
ssh -p 22022 [email protected]
Ожидаемый результат:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
Мы успешно настроили безопасный доступ к серверу:
| Параметр | Было | Стало |
|---|---|---|
| Пользователь для входа | root | admin |
| Группа sudo | нет | wheel |
| Root-доступ | разрешён | заблокирован |
| Парольная аутентификация | возможна | отключена |
| SSH-ключ | только root | admin тоже |
Теперь сервер защищён от brute-force атак на пользователя root, а все опасные действия требуют осознанного подтверждения через sudo.
12 февраля 2026