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

Настройка SSH-ключей

SSH-ключи заменяют вход по паролю криптографической парой ключей. Приватный ключ остаётся на вашей машине; публичный ключ размещается на сервере.

На вашей локальной машине:

Окно терминала
ssh-keygen -t ed25519 -C "ваш@email.com"
  • -t ed25519 — современный компактный алгоритм (предпочтительнее RSA)
  • -C — необязательная метка для идентификации ключа

При запросе выберите путь (по умолчанию ~/.ssh/id_ed25519) и необязательную парольную фразу.

Окно терминала
ssh-copy-id -i ~/.ssh/id_ed25519.pub пользователь@ip-вашего-сервера

Или добавьте вручную:

Окно терминала
cat ~/.ssh/id_ed25519.pub | ssh пользователь@ip-вашего-сервера "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Окно терминала
ssh пользователь@ip-вашего-сервера

Вы должны войти без запроса пароля.

Избегайте ввода длинных имён хостов, добавив запись в ~/.ssh/config:

Host мойсервер
HostName ip-вашего-сервера
User вашпользователь
IdentityFile ~/.ssh/id_ed25519

Теперь можно подключаться просто:

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

Отключение входа по паролю (рекомендуется)

Заголовок раздела «Отключение входа по паролю (рекомендуется)»

После того как вход по ключу заработал, отключите парольную аутентификацию на сервере.

Отредактируйте /etc/ssh/sshd_config:

PasswordAuthentication no
PubkeyAuthentication yes

Перезапустите службу SSH:

Окно терминала
sudo systemctl restart sshd

Убедитесь, что ключ работает, прежде чем закрывать текущую сессию.

ПроблемаВероятная причина
Permission denied (publickey)Публичный ключ отсутствует в authorized_keys или неверный пользователь
Warning: unprotected private keyИсправьте командой chmod 600 ~/.ssh/id_ed25519
Connection refusedSSH не запущен или неверный порт — проверьте sudo systemctl status sshd