← К вики

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

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

Время: 10 мин · Сложность: ★☆☆☆☆

Подходит: ✓ Ubuntu 22.04 · ✓ Debian 12 · ✓ AlmaLinux 9


Краткое описание

Вход по SSH-ключу безопаснее пароля: ключ нельзя подобрать перебором. После настройки ключей отключите парольную аутентификацию — это уберёт целый класс атак на сервер.

Когда пригодится

  • Вы хотите войти на сервер без пароля
  • Вы хотите запретить вход по паролю
  • Вы настраиваете автоматизацию (CI/CD, скрипты) с доступом к серверу

Что понадобится

  • Доступ к серверу по SSH (пока с паролем)
  • Терминал на вашем компьютере

Пошаговая инструкция

1. Сгенерируйте ключ на своём компьютере

Linux и macOS:

ssh-keygen -t ed25519 -C "your@email.com"

Команда создаст два файла:

  • ~/.ssh/id_ed25519 — приватный ключ (никому не передавайте)
  • ~/.ssh/id_ed25519.pub — публичный ключ (этот копируется на сервер)

При запросе пути нажмите Enter, чтобы использовать путь по умолчанию. Passphrase можно оставить пустым или задать для дополнительной защиты.

Windows (PowerShell):

ssh-keygen -t ed25519

Ключи появятся в C:\Users\YourName\.ssh\.

2. Скопируйте публичный ключ на сервер

Linux и macOS:

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@SERVER_IP

Введите пароль от сервера — больше он не понадобится.

Windows — скопируйте вручную. Выведите содержимое публичного ключа:

cat $env:USERPROFILE\.ssh\id_ed25519.pub

Войдите на сервер с паролем и добавьте ключ:

mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "вставьте_содержимое_pub_ключа_сюда" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

3. Проверьте вход по ключу

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

ssh -i ~/.ssh/id_ed25519 user@SERVER_IP

Если вход прошёл без запроса пароля — ключ работает.

4. Отключите парольную аутентификацию

Откройте конфигурацию SSH на сервере:

nano /etc/ssh/sshd_config

Найдите строку:

#PasswordAuthentication yes

Замените на:

PasswordAuthentication no

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

systemctl restart sshd

Проверьте: попытка войти с паролем должна вернуть Permission denied (publickey).

Проверка результата

ssh user@SERVER_IP
# Вход без запроса пароля
ssh -o PasswordAuthentication=yes user@SERVER_IP
# Permission denied (publickey).

Возможные ошибки

Permission denied (publickey)

Проверьте права на файлы:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Публичный ключ должен быть записан в ~/.ssh/authorized_keys полностью, в одну строку.

ssh-copy-id: ERROR: ssh: connect to host

Неверный IP-адрес или порт. Если SSH работает на нестандартном порту:

ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 user@SERVER_IP

После перезапуска sshd потерял доступ

Не закрывайте текущую сессию до проверки нового входа. Если доступ потерян — используйте VNC-консоль в панели управления Cheesecake Cloud.

FAQ

Как добавить второй ключ?

Добавьте содержимое нового .pub-файла в ~/.ssh/authorized_keys на сервере — каждый ключ на отдельной строке.

Как работать с несколькими серверами удобнее?

Создайте ~/.ssh/config на своём компьютере:

Host myserver
    HostName SERVER_IP
    User username
    IdentityFile ~/.ssh/id_ed25519

Host staging
    HostName STAGING_IP
    User deploy
    IdentityFile ~/.ssh/id_ed25519

После этого подключайтесь просто:

ssh myserver

Один ключ для нескольких серверов?

Да, публичный ключ можно добавить в authorized_keys на любом количестве серверов. Это удобно и безопасно — каждый сервер хранит только публичную часть.

Нужен ли passphrase на ключе?

Passphrase шифрует приватный ключ на диске. Если кто-то получит файл ключа — без passphrase он сразу сможет им воспользоваться. Для личного использования passphrase удобно хранить в ssh-agent:

ssh-add ~/.ssh/id_ed25519

Полезные ссылки

Следующие статьи

Сейчас работают только те cookie, без которых сайт не откроется. Разрешите ещё аналитические — будем видеть, где интерфейс мешает, и чинить это.