33. SSH-ключи без боли: почему не пускает на сервер и как исправить

SSH-доступ без пароля — это самый безопасный и удобный способ входа на сервер. Ниже — простой порядок действий, который помогает избежать ошибки «Permission denied (publickey)» и спокойно входить под новым пользователем.


1. Создание пользователя на сервере

Под root выполните:

adduser myuser
usermod -aG sudo myuser

Теперь у вас есть обычный пользователь с правами sudo — для работы, а не для постоянного использования root.


2. Генерация SSH-ключей на своём ПК

На локальной машине (Linux/Mac/WSL):

ssh-keygen -t ed25519 -C "myuser-key"

Нажимаем Enter несколько раз — ключи создадутся по пути:

~/.ssh/id_ed25519
~/.ssh/id_ed25519.pub

3. Добавление ключа на сервер

Под root создаём структуру для ключей пользователя:

mkdir -p /home/myuser/.ssh
nano /home/myuser/.ssh/authorized_keys

Вставляем содержимое файла id_ed25519.pub (в одну строку),
сохраняем и закрываем.


4. Правильные права доступа

Очень важно — иначе SSH точно не пустит:

chown -R myuser:myuser /home/myuser/.ssh
chmod 700 /home/myuser/.ssh
chmod 600 /home/myuser/.ssh/authorized_keys

5. Пробуем войти

С локального компьютера:

ssh myuser@IP_сервера

Если всё сделано правильно — вход будет без пароля.


Типичные ошибки, из-за которых не пускает

ПроблемаПочему не работает
Ключ вставлен с переносом строкиSSH не принимает файл
Неверные права (должны быть 700/600)Доступ блокируется
Неправильный владелец .sshФайлы принадлежат root, а не пользователю
Забыли отключить вход паролемСервер требует ключ, которого нет

6. (Важно) Дополнительная защита

После успешного входа можно закрыть вход по паролю:

sudo nano /etc/ssh/sshd_config

Изменить:

PasswordAuthentication no
PermitRootLogin no

Перезапустить SSH:

sudo systemctl restart ssh

Итог

🔐 SSH на ключах — это:

  • защита от перебора паролей
  • защита от взлома
  • удобный вход без лишних вводов

Если всё сделать по шагам — ошибки исчезнут.

Обслуживание сервера

Оставьте комментарий