Вход root по SSH
По умолчанию в Ubuntu войти по SSH под root с паролем нельзя, и так задумано. У root нет пароля вовсе, а сервер SSH пускает root только по ключу (настройка PermitRootLogin prohibit-password). Обычно root и не нужен: войдите своим пользователем и станьте root командой sudo.
Без входа под root — так безопаснее
ssh ivan@192.168.1.10
sudo -isudo -i открывает оболочку root после ввода пароля вашего пользователя. Выход — exit. Для одной команды хватит sudo перед ней: sudo apt update. Каждая такая команда записывается в журнал системы, и видно, кто что делал.
Root по ключу
Если вход именно под root нужен (например, для программы резервного копирования), пустите root по ключу — пароль для этого не нужен, а настройку по умолчанию менять не придётся. Положите открытый ключ в /root/.ssh/authorized_keys:
sudo mkdir -p /root/.ssh
sudo nano /root/.ssh/authorized_keys
sudo chmod 700 /root/.ssh
sudo chmod 600 /root/.ssh/authorized_keysФайла authorized_keys у root обычно нет — nano создаст его при сохранении. В открывшийся файл вставьте строку открытого ключа (файл ~/.ssh/id_ed25519.pub на вашем компьютере, как его создать — в уроке SSH — удалённый доступ к серверу). Проверьте: ssh root@192.168.1.10.
Root по паролю
Серверы с открытым портом 22 круглосуточно перебирают боты, и первым делом — пароли root. Вход root по паролю включайте только в своей сети, с длинным паролем и ненадолго. Надёжнее — ключ.
Задайте root пароль:
sudo passwd rootТеперь вход root с паролем нужно разрешить в настройках сервера SSH. Главный файл настроек — /etc/ssh/sshd_config. В Ubuntu 20.04 и новее в его начале стоит строка Include /etc/ssh/sshd_config.d/*.conf: сервер читает и все файлы .conf из папки /etc/ssh/sshd_config.d/. Свои настройки удобнее положить туда отдельным файлом — главный файл остаётся нетронутым, а вернуть как было — значит удалить один файл. Проверьте, есть ли такая строка:
$ grep -n Include /etc/ssh/sshd_config
12:Include /etc/ssh/sshd_config.d/*.confСтрока естьсоздайте свой файл в папке
Файла 10-root.conf в системе нет, так и должно быть: nano откроет пустой файл (внизу надпись «New File» или «Новый файл») и создаст его при сохранении.
sudo nano /etc/ssh/sshd_config.d/10-root.confВпишите две строки, сохраните — Ctrl+O, затем Enter — и выйдите: Ctrl+X.
PermitRootLogin yes
PasswordAuthentication yesХочется править главный файл? Можно, но учтите: строка Include стоит в его начале, поэтому файлы папки читаются раньше, а в настройках SSH действует первое найденное значение. Если в папке лежит, например, 50-cloud-init.conf (его пишет cloud-init — настройщик облачных серверов) со строкой PasswordAuthentication, правка той же настройки в главном файле ничего не изменит.
Строки нетправьте главный файл
grep ничего не вывел (или nano пишет, что папки /etc/ssh/sshd_config.d нет) — значит, Ubuntu старше 20.04 либо главный файл остался от прежней версии системы: при обновлении на вопрос о sshd_config выбрали «оставить свою версию». Такой сервер файлы папки не читает, и настройки правят в самом главном файле:
sudo nano /etc/ssh/sshd_configНайдите строки #PermitRootLogin prohibit-password и #PasswordAuthentication yes (поиск в nano — Ctrl+W), уберите # в начале и поставьте нужные значения:
PermitRootLogin yes
PasswordAuthentication yesСтрока с # в начале — комментарий: сервер её не читает и берёт значение по умолчанию.
Проверка и перезапуск
В обоих случаях проверьте настройки и перезапустите сервер:
sudo sshd -t
sudo systemctl restart sshКакие значения действуют на самом деле, показывает sshd -T — с учётом всех файлов настроек:
sudo sshd -T | grep -E 'permitrootlogin|passwordauthentication'Должно быть permitrootlogin yes и passwordauthentication yes. Если там другое — то же значение задано раньше вашего (действует первое найденное): посмотрите ls /etc/ssh/sshd_config.d/. Есть файл, который идёт по алфавиту раньше 10-root.conf, — назовите свой так, чтобы он шёл первым (например, 05-root.conf). Правили главный файл — его перебивает файл из папки: положите настройки своим файлом в папку, как описано выше.
Как вернуть как было
Заблокируйте пароль root — вход с паролем закроется, sudo будет работать как прежде:
sudo passwd -l rootСоздавали свой файлудалите его
sudo rm /etc/ssh/sshd_config.d/10-root.confПравили главный файлверните строки
Откройте /etc/ssh/sshd_config и верните прежний вид двух строк: #PermitRootLogin prohibit-password и #PasswordAuthentication yes.
Затем перезапустите сервер: sudo systemctl restart ssh.
Если не пускает
Permission deniedпри верном пароле — проверьтеsudo sshd -T: вход root или пароль выключен другим файлом.sshd -Tне видит ваших строк из10-root.conf— в/etc/ssh/sshd_configнет строкиInclude(ветка Строки нет — правьте главный файл выше).- После
PermitRootLogin yesпускает только с ключом — не перезапущен сервер (sudo systemctl restart ssh). - Пускает с ключом, но не под root — ключ лежит не в
/root/.ssh/authorized_keysили у папки слишком открытые права: нужны700у папки и600у файла.