Как открыть root-доступ по SSH на Ubuntu Print

  • ubuntu, vps, администрирование
  • 1

В Ubuntu root по SSH по умолчанию выключен. Безопасный путь такой: включить вход для root по ключу, проверить, затем при необходимости временно дать вход по паролю и быстро его отключить.

Важно про риски:
- Вход root по паролю увеличивает поверхность атаки.
- Никогда не отключайте sudo для обычного администратора до финальной проверки входа root.
- Всегда проверяйте доступ в новом терминале, не разрывая текущую сессию.

ВАЖНО! 
- У вас есть пользователь с sudo на сервере.
- Пакет OpenSSH Server установлен.
- Есть локальный приватный ключ на вашей машине.

Проверим и подготовим:

sudo apt update
sudo apt install -y openssh-server
sudo systemctl enable --now ssh
sudo systemctl status ssh --no-pager


Вариант 1. Включить root по SSH только по ключу (рекомендуется)

1. Задать или разблокировать пароль root только для консольных нужд
Это не включает парольный вход по SSH, но снимает блокировку учетной записи.

sudo passwd -u root || true
sudo passwd root

2. Создать ключевую директорию и права для root

sudo mkdir -p /root/.ssh
sudo chmod 700 /root/.ssh

3. Скопировать ваш публичный ключ в root
Если сейчас вы залогинены как админ-пользователь, перенесите его ключ:

sudo install -m 600 -o root -g root ~$(whoami)/.ssh/authorized_keys /root/.ssh/authorized_keys 2>/dev/null || \
sudo cp ~$(whoami)/.ssh/authorized_keys /root/.ssh/authorized_keys && sudo chmod 600 /root/.ssh/authorized_keys && sudo chown root:root /root/.ssh/authorized_keys

Если ключа нет, добавьте вручную:

sudo bash -c 'echo "ssh-ed25519 AAAA... ваш_публичный_ключ ..." >> /root/.ssh/authorized_keys'
sudo chmod 600 /root/.ssh/authorized_keys
sudo chown root:root /root/.ssh/authorized_keys

4. Включить PermitRootLogin для ключей и корректно переопределить конфигурацию
В современных Ubuntu используется каталог включаемых конфигов. Создадим отдельный drop-in, чтобы не ловить дубли.

sudo bash -c 'cat >/etc/ssh/sshd_config.d/99-root-login.conf <<EOF
PermitRootLogin prohibit-password
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM yes
AuthorizedKeysFile .ssh/authorized_keys
EOF'

5. Проверить синтаксис, перегрузить SSH и протестировать

sudo sshd -t
sudo systemctl reload ssh
# В НОВОМ терминале, не закрывая текущий:
ssh -o PreferredAuthentications=publickey [email protected]

Ожидаемо подключение пройдет по ключу. Если не прошло, возвращайтесь в прежний терминал, проверяйте права на /root/.ssh и файл authorized_keys, а также журналы:

sudo journalctl -u ssh -e --no-pager

6. Защитные меры
- Оставьте PasswordAuthentication no и PermitRootLogin prohibit-password.
- Убедитесь, что брандмауэр открыт только для нужных источников:

sudo ufw allow OpenSSH
sudo ufw status verbose

Вариант 2. Root по паролю для доступа

Используйте только как временную меру и позднее отключите.

1. Убедиться, что у root есть пароль и учетная запись не заблокирована

sudo passwd -u root || true
sudo passwd root

2. Разрешить вход root по паролю через drop-in

sudo bash -c 'cat >/etc/ssh/sshd_config.d/99-root-password-login.conf <<EOF
PermitRootLogin yes
PasswordAuthentication yes
UsePAM yes
EOF'
sudo sshd -t
sudo systemctl reload ssh

3. Проверка в новом терминале

ssh [email protected]

4. После работ вернуть безопасные значения

sudo rm -f /etc/ssh/sshd_config.d/99-root-password-login.conf
sudo bash -c 'cat >/etc/ssh/sshd_config.d/99-root-login.conf <<EOF
PermitRootLogin prohibit-password
PasswordAuthentication no
PubkeyAuthentication yes
UsePAM yes
AuthorizedKeysFile .ssh/authorized_keys
EOF'
sudo sshd -t
sudo systemctl reload ssh

 

Учет cloud-init и включаемых файлов

На VPS-образах Ubuntu часто действует 50-cloud-init.conf, где уже стоят запреты на парольный вход. Наш файл 99-*.conf подключается позже и перекрывает их. Проверяйте порядок:

grep -nH "PermitRootLogin\|PasswordAuthentication" /etc/ssh/sshd_config /etc/ssh/sshd_config.d/*.conf 2>/dev/null

Правило действует то, что прочитано последним.

Типовые проблемы и решения

- Подключение по ключу не работает
Проверьте права: каталог /root/.ssh должен быть 700, файл authorized_keys 600, владелец root:root. Проверьте, что в логах нет жалоб на права.
- Две конфликтующие директивы в разных файлах
Найдите все вхождения PermitRootLogin и PasswordAuthentication (см. grep выше). Оставьте нужные значения в 99-*.conf.
- Сервис SSH перезапущен, но порт закрыт
Откройте в UFW порт OpenSSH. Если порт нестандартный, добавьте, например:

sudo ufw allow 2222/tcp

- Fail2ban банит парольные попытки
Это нормально. Для аварийного входа лучше сразу использовать ключи и отключить пароль.
- Ошибка синтаксиса в конфигурации
Всегда проверяйте sshd -t перед reload. Если ошиблись, reload не пройдет, старые соединения не отвалятся.


Мини-чек-лист безопасности после включения root

- Оставить только вход по ключу: PermitRootLogin prohibit-password, PasswordAuthentication no.
- Сменить порт на нестандартный при необходимости и ограничить доступ на уровне брандмауэра.
- Включить Fail2ban для sshd.
- Хранить вторую пару ключей как резерв.
- Самый безопасный способ для Ubuntu: включить root только по ключу через drop-in конфиг и проверить в новой сессии.
- Временный вход по паролю допустим лишь как исключение и должен быть быстро выключен.
- Всегда проверяйте синтаксис, права на ключи и порядок подключения конфигов.


Was this answer helpful?

« Back

Powered by WHMCompleteSolution


Knowledgebase