← Вернуться к оглавлению

🔐 Настройка доступа по SSH-ключу

Краткая инструкция по переходу на аутентификацию только по SSH-ключу с полным запретом входа по паролю и для пользователя root.

📋 Исходные данные

⚠️ Важно: НЕ закрывайте текущую SSH-сессию, пока не убедитесь, что вход по ключу работает в отдельном окне. Иначе можно потерять доступ к серверу.

💻 Настройка на локальной машине

1. Проверка наличия ключа

# Проверяем, есть ли уже ключ
ls -la ~/.ssh
        

Если есть файлы id_ed25519 / id_ed25519.pub — ключ уже создан, переходите к шагу 3.

2. Генерация нового ключа

# Генерируем ключ (ed25519 — современный и надёжный алгоритм)
ssh-keygen -t ed25519 -C "avk27@local"

# На вопрос о пути — Enter (по умолчанию ~/.ssh/id_ed25519)
# На вопрос о пароле (passphrase) — рекомендуем задать для доп. защиты
        

3. Копирование публичного ключа на сервер

# Способ 1 — через ssh-copy-id (потребуется пароль root)
ssh-copy-id root@193.32.179.138

# Способ 2 — вручную, если ssh-copy-id недоступен
cat ~/.ssh/id_ed25519.pub | ssh root@193.32.179.138 \
    "mkdir -p ~/.ssh && chmod 700 ~/.ssh && \
     cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
        

4. Проверка входа по ключу

# Вход должен сработать БЕЗ запроса пароля root
ssh root@193.32.179.138
        

✅ Если вошли без пароля — ключ работает. Только после этого переходите к настройке сервера.

🖥️ Настройка на удалённом хосте

Все команды выполняются на сервере 193.32.179.138 (в уже открытой SSH-сессии).

1. Создание пользователя (рекомендуется вместо root)

# Создаём нового пользователя (замените 'mesca' на свой логин)
adduser mesca

# Даём права sudo
usermod -aG sudo mesca

# Копируем ключ root новому пользователю
rsync --archive --chown=mesca:mesca ~/.ssh /home/mesca/
        

2. Настройка sshd

# Резервная копия конфига
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

# Открываем основной конфиг
nano /etc/ssh/sshd_config
        

Приводим строки к виду (раскомментировать при необходимости):

PermitRootLogin no               # запрет входа для root
PasswordAuthentication no         # запрет входа по паролю
PubkeyAuthentication yes          # разрешить вход по ключу
KbdInteractiveAuthentication no   # запрет интерактивного ввода пароля
UsePAM yes
        

ℹ️ В Ubuntu 24.04 эти директивы могут быть переопределены в /etc/ssh/sshd_config.d/*.conf. Проверьте и приведите к тому же виду:

# Проверяем переопределения
grep -r PasswordAuthentication /etc/ssh/sshd_config.d/
grep -r PermitRootLogin /etc/ssh/sshd_config.d/

# При необходимости отредактируйте файлы в /etc/ssh/sshd_config.d/
# Например: nano /etc/ssh/sshd_config.d/50-cloud-init.conf
        

3. Проверка конфигурации и перезапуск

# Проверяем синтаксис (должно быть без ошибок)
sshd -t

# Перезапускаем службу
systemctl restart ssh
systemctl status ssh
        

4. Блокировка пароля root (доп. защита)

# Полностью блокируем пароль root (вход по-прежнему возможен через sudo)
passwd -l root
        

✅ Финальная проверка

НЕ закрывая текущую сессию, в новом окне терминала проверьте:

# Должно пустить по ключу под обычным пользователем
ssh mesca@193.32.179.138

# Проверка, что root больше не пускает
ssh root@193.32.179.138
# Ожидаемый результат: Permission denied (publickey)

# Проверка, что пароль не запрашивается
ssh -o PubkeyAuthentication=no mesca@193.32.179.138
# Ожидаемый результат: Permission denied (publickey)
        

Если все три проверки прошли как описано — настройка завершена корректно, старую сессию можно закрыть.

🔧 Если что-то пошло не так

💡 Полезные советы