Настройка прямого 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
Бонус: Доступ по SFTP
Часто возникает вопрос: «А как теперь заходить через SFTP, если пароли отключены?».
SFTP работает через тот же SSH-протокол, поэтому все настройки из Шага 3 применяются и к нему:
- Порт: Вместо стандартного 22 указывайте ваш новый (например,
4821). - Протокол: SFTP (не FTP!).
- Пользователь:
root.
Как настроить подключение:
- В Termius: Всё уже готово. В списке хостов просто нажмите правой кнопкой на сервер и выберите SFTP. Ключи подхватятся автоматически.
- В FileZilla:
- Откройте Менеджер сайтов (
Cmd+S). - Создайте новое соединение и выберите протокол SFTP.
- Укажите IP и новый порт.
- Тип входа: Файл с ключом (Key file).
- Нажмите «Обзор» и выберите файл вашего приватного ключа.
- Откройте Менеджер сайтов (
Если ключ создан внутри Termius, его нужно выгрузить на диск: зайдите в Keychain, нажмите на три точки у нужного ключа и выберите Export. Сохраните файл и укажите его в настройках FileZilla.
Возможные проблемы
Ошибка: «Received unexpected end-of-file from SFTP server»
Если FileZilla выдает такую ошибку (или «FATAL ERROR»), при этом обычная консоль через Termius работает — проблема в конфигурации подсистемы SFTP.
Как исправить:
- Проверьте конфиг:
nano /etc/ssh/sshd_config. - Найдите строку
Subsystem sftp. Она должна выглядеть строго так:Subsystem sftp internal-sftp - Если там указан путь к файлу, которого нет, или написано
internal-sftp-server(с ошибкой), исправьте на вариант выше. - Перезапустите SSH:
systemctl restart ssh.
Итог: Сервер настроен по высшим стандартам. Вход за 1 клик (и в консоль, и в SFTP), пароли отключены, порт скрыт. Чистая и безопасная работа!