Настройка 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