Настройка прямого Root-доступа по SSH-ключам (Ubuntu 24.04)
После того как я обновил систему до актуальной версии, пришло время привести в порядок доступ. Стандартная настройка от хостера — это классическая «старая школа»: тебе дают обычного пользователя workuser, через которого ты заходишь по SSH, а потом каждый раз вводишь sudo -i (или su -) и пароль, чтобы наконец начать работу.
Это надежно, но, честно говоря, когда ты администрируешь сервер сам, этот ритуал с переключением пользователей быстро начинает раздражать. Я решил это исправить: настроить всё так, чтобы мой Termius залетал на сервер сразу под root, но при этом сделать это безопаснее, чем просто вход по паролю.
Шаг 1: Изменение пароля root
Первым делом, зайдя под root (через тот же sudo -i), я обновил главный пароль системы. Поскольку workuser я собираюсь удалить, тратить время на смену его пароля нет никакого смысла.
passwd
Шаг 2: Настройка входа по SSH-ключам
Это база безопасности. Вместо того чтобы сервер спрашивал пароль (который можно подобрать), он будет узнавать мой Termius по уникальному ключу.
- Генерирую ключ в Termius: Иду в
Keychain->Add Key->Generate Key. - Выбираю алгоритм: Выбираю ED25519 — он компактный, быстрый и очень стойкий к взлому.
- Копирую 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 перед подключением! И не закрывайте текущую консоль, пока не убедитесь, что новое соединение работает.
- В Termius создайте новое соединение с новым портом и старым ключом.
- Попробуйте зайти. Если всё ок, вы сразу увидите:
root@server:~#.
Шаг 5: Очистка системы (Удаление workuser)
Теперь «посредник» нам больше не нужен. Удаляем его вместе со всеми потрохами:
userdel -r workuser
Итог: Сервер настроен по высшим стандартам. Вход за 1 клик, пароли отключены, порт скрыт. Чистая и безопасная работа!