Перейти к основному содержимому

Настройка прямого Root-доступа по SSH-ключам (Ubuntu 24.04)

После того как я обновил систему до актуальной версии, пришло время привести в порядок доступ. Стандартная настройка от хостера — это классическая «старая школа»: тебе дают обычного пользователя workuser, через которого ты заходишь по SSH, а потом каждый раз вводишь sudo -i (или su -) и пароль, чтобы наконец начать работу.

Это надежно, но, честно говоря, когда ты администрируешь сервер сам, этот ритуал с переключением пользователей быстро начинает раздражать. Я решил это исправить: настроить всё так, чтобы мой Termius залетал на сервер сразу под root, но при этом сделать это безопаснее, чем просто вход по паролю.

Шаг 1: Изменение пароля root

Первым делом, зайдя под root (через тот же sudo -i), я обновил главный пароль системы. Поскольку workuser я собираюсь удалить, тратить время на смену его пароля нет никакого смысла.

passwd

Шаг 2: Настройка входа по SSH-ключам

Это база безопасности. Вместо того чтобы сервер спрашивал пароль (который можно подобрать), он будет узнавать мой Termius по уникальному ключу.

  1. Генерирую ключ в Termius: Иду в Keychain -> Add Key -> Generate Key.
  2. Выбираю алгоритм: Выбираю ED25519 — он компактный, быстрый и очень стойкий к взлому.
  3. Копирую Public Key: Именно эту «публичную» строку мы сейчас положим на сервер.

Шаг 2.2: Прописываем ключ на сервере

Когда публичный ключ уже в буфере обмена, переходим в терминал. Нам нужно создать «хранилище» для ключей и правильно его настроить.

1. Создаем директорию для SSH

mkdir -p ~/.ssh
  • ~ — это домашняя директория root (то есть /root).
  • -p — создаст папку, если её нет.

2. Настраиваем права доступа SSH очень придирчив к безопасности. Если папка доступна кому-то, кроме владельца, система проигнорирует ключи:

chmod 700 ~/.ssh

3. Создаем файл с разрешенными ключами

nano ~/.ssh/authorized_keys

В открывшемся окне вставьте ваш ключ из Termius. Он должен начинаться с ssh-ed25519 AAAAC3Nza.....

Важно!

Не путайте Public и Private ключи.

  • Public Key (Публичный) — кладём на сервер.
  • Private Key (Приватный) — остаётся только в вашем Termius. Никогда не копируйте его на сервер!

Сохраните файл: Ctrl+O, затем Enter. Выйдите: Ctrl+X.

4. Защищаем файл с ключами

chmod 600 ~/.ssh/authorized_keys

Без этих прав (600) SSH-сервер из соображений безопасности просто откажется считывать файл.

Шаг 3: Конфигурация SSH (Открываем двери для root и меняем порт)

Теперь самое интересное. Мы настроим сервер так, чтобы он пускал только по ключу, и сразу сменим стандартный порт на свой, чтобы спрятаться от большинства ботов.

Открываем конфиг:

nano /etc/ssh/sshd_config

Ищем и приводим эти параметры к следующему виду (обязательно удаляйте # в начале строки!):

Port 4821
PubkeyAuthentication yes
PermitRootLogin prohibit-password
PasswordAuthentication no
  • Port 4821: Меняем стандартный 22-й порт на свой. Это резко снизит количество «шума» в логах.
  • PubkeyAuthentication yes: Разрешаем вход по ключам.
  • PermitRootLogin prohibit-password: Главный предохранитель. Разрешаем вход под root, но только по ключу.
  • PasswordAuthentication no: Полностью отключаем ввод пароля для всех. Теперь брутфорс физически невозможен.

Сохраняем и перезагружаем SSH:

systemctl restart ssh

Шаг 4: Тестовый запуск (Момент истины)

Внимание!

Не забудьте сменить порт в настройках Termius на 4821 перед подключением! И не закрывайте текущую консоль, пока не убедитесь, что новое соединение работает.

  1. В Termius создайте новое соединение с новым портом и старым ключом.
  2. Попробуйте зайти. Если всё ок, вы сразу увидите: root@server:~#.

Шаг 5: Очистка системы (Удаление workuser)

Теперь «посредник» нам больше не нужен. Удаляем его вместе со всеми потрохами:

userdel -r workuser

Итог: Сервер настроен по высшим стандартам. Вход за 1 клик, пароли отключены, порт скрыт. Чистая и безопасная работа!