В Ubuntu вход под root по паролю по умолчанию закрыт. Иногда он всё-таки нужен — для старой панели, скрипта или подрядчика. Разбираем, как открыть доступ правильно, как сменить пароль и как не стать лёгкой целью для перебора паролей.
Почему root по SSH закрыт
В Ubuntu две защиты сразу. Во-первых, у root часто нет пароля — учётная запись заблокирована, а администрировать предлагается через sudo. Во-вторых, OpenSSH по умолчанию работает с PermitRootLogin prohibit-password: root может войти только по SSH-ключу, по паролю — нет. В облачных образах дополнительно стоит файл /etc/ssh/sshd_config.d/50-cloud-init.conf, который часто выключает вход по паролю для всех.
Поэтому порядок такой: сначала задать пароль root, потом разрешить вход в настройках SSH, потом проверить, что разрешение действительно применилось.
Шаг 1. Задайте или смените пароль root
Войдите на сервер под пользователем с правами sudo (или через консоль в личном кабинете) и выполните:
sudo passwd root
Дважды введите новый пароль — символы на экране не отображаются, это нормально. Если вы уже работаете под root, достаточно команды passwd. Пароль другого пользователя меняется так же: sudo passwd ИМЯ.
Проверьте состояние учётной записи:
sudo passwd -S root
Во втором поле буква P — пароль задан и работает, L — учётная запись заблокирована, NP — пароля нет.
Какой пароль ставить. Root, открытый в интернет, начинают подбирать в первые часы после запуска сервера. Нужен длинный случайный пароль — не меньше 16 символов, не словарное слово и не пароль от другого сервиса. Сгенерировать его можно прямо на сервере:
openssl rand -base64 18
Шаг 2. Разрешите вход root по SSH
Не правьте основной sshd_config — создайте отдельный файл с настройками. В Ubuntu 22.04 и 24.04 файлы из /etc/ssh/sshd_config.d/ читаются по алфавиту, и действует первое найденное значение. Поэтому имя файла начинаем с 01 — тогда он прочитается раньше 50-cloud-init.conf:
sudo nano /etc/ssh/sshd_config.d/01-root-login.conf
Вставьте две строки и сохраните файл (Ctrl+O, Enter, Ctrl+X):
PermitRootLogin yes
PasswordAuthentication yes
Если root будет входить только по ключу, пароль в SSH открывать не нужно: оставьте PermitRootLogin prohibit-password и положите ключ в /root/.ssh/authorized_keys — как это сделать, описано в статье о SSH-ключах.
Шаг 3. Проверьте и примените настройки
Сначала проверьте, что в конфигурации нет ошибок, и посмотрите, какие значения sshd будет использовать на самом деле:
sudo sshd -t
sudo sshd -T | grep -Ei "permitrootlogin|passwordauthentication"
Должно быть permitrootlogin yes и passwordauthentication yes. Если видите другое — значит, раньше вашего файла читается другой с противоположным значением: найдите его командой sudo grep -ri "PermitRootLogin\|PasswordAuthentication" /etc/ssh/.
Перезапустите SSH:
sudo systemctl restart ssh
Если включён брандмауэр UFW, убедитесь, что SSH в нём разрешён: sudo ufw status, при необходимости — sudo ufw allow OpenSSH.
Шаг 4. Проверьте вход
Не закрывайте текущее окно. Откройте новое и подключитесь:
ssh root@ВАШ_IP
На Windows то же самое работает в PowerShell, в PuTTY укажите IP, порт 22 и логин root. Если вход не проходит, в первом окне смотрите причину в журнале: sudo journalctl -u ssh -n 30.
Как защитить root после открытия доступа
- Перейдите на ключ. Как только root-доступ нужен только вам, настройте вход по SSH-ключу и замените в файле
01-root-login.confстроки наPermitRootLogin prohibit-passwordиPasswordAuthentication no. - Ограничьте вход по IP. Если подключаетесь с постоянного адреса, разрешите SSH только с него:
sudo ufw allow from 203.0.113.10 to any port 22 proto tcp, а общее правило удалите:sudo ufw delete allow OpenSSH. Делайте это из того окна, которое уже подключено, и только когда уверены в своём IP. - Поставьте fail2ban.
sudo apt install fail2ban— в Ubuntu он сразу защищает SSH и блокирует адреса после нескольких неудачных попыток. - Закройте root, когда доступ больше не нужен. Удалите файл и перезапустите SSH:
sudo rm /etc/ssh/sshd_config.d/01-root-login.conf && sudo systemctl restart ssh. Заблокировать сам пароль root можно командойsudo passwd -l root.
Если забыли пароль root
Если есть другой пользователь с sudo — войдите под ним и выполните sudo passwd root. Если войти не получается ни под кем, на VPS MyCloud откройте консоль сервера в личном кабинете mcvps.uz и перезагрузите сервер. В меню GRUB (при загрузке удерживайте Shift или нажимайте Esc) выберите «Advanced options» → «recovery mode» → «root». Затем выполните:
mount -o remount,rw /
passwd root
reboot
Сервер с Ubuntu можно создать на странице VPS серверов — консоль в личном кабинете остаётся запасным входом, даже если в настройках SSH что-то пошло не так.
Нужна помощь с задачей из статьи?
Подберём конфигурацию, посчитаем стоимость и поможем с переносом.