Как открыть root-доступ по SSH в Ubuntu и сменить пароль root

VPS и серверы Опубликовано: · 6 мин чтения

В 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 что-то пошло не так.

Нужна помощь с задачей из статьи?

Подберём конфигурацию, посчитаем стоимость и поможем с переносом.

Не знаете, что выбрать? Подскажем и подберём конфигурацию

Напишите, что нужно — сервер для 1С, камеры для ПВЗ или переезд с другого хостинга. Подберём решение, назовём точную цену и поможем с переносом: проконсультируем и подскажем порядок действий.