SSH-ключи — базис любой серверной работы. Ниже — минимальный, но актуальный на 2026 год гайд: Ed25519 (вместо устаревшего RSA), ssh-agent, авто-подхват на macOS/Linux, ротация без потери доступа.
Генерация ключа Ed25519
RSA-2048 всё ещё безопасен, но Ed25519 — быстрее, короче, современнее. Используем его.
ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/id_ed25519_prod
# при генерации спросит passphrase — установите сильную (24+ chars)
# файлы:
# ~/.ssh/id_ed25519_prod - приватный (chmod 600)
# ~/.ssh/id_ed25519_prod.pub - публичный (кладём на серверы)Копирование на сервер
ssh-copy-id — удобнее ручного копирования.
ssh-copy-id -i ~/.ssh/id_ed25519_prod.pub [email protected]
# альтернатива — вручную:
cat ~/.ssh/id_ed25519_prod.pub | ssh [email protected] \
"mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"ssh-agent: чтобы не вводить passphrase каждый раз
ssh-agent держит расшифрованный ключ в памяти. На macOS/Linux — обычно уже запущен.
# запуск (если не запущен)
eval "$(ssh-agent -s)"
# добавить ключ (спросит passphrase 1 раз)
ssh-add ~/.ssh/id_ed25519_prod
# проверка
ssh-add -l # список ключей в агенте
# теперь ssh не спрашивает passphrase
ssh [email protected]~/.ssh/config — псевдонимы серверов
Позволяет писать ssh prod вместо ssh -i ~/.ssh/id_ed25519_prod -p 22042 [email protected].
# ~/.ssh/config
Host prod
HostName 1.2.3.4
User deploy
Port 22042
IdentityFile ~/.ssh/id_ed25519_prod
AddKeysToAgent yes
UseKeychain yes # macOS: сохранить passphrase в Keychain
Host db-*
User deploy
IdentityFile ~/.ssh/id_ed25519_prod
ProxyJump prod # ходить через bastionРотация ключей без потери доступа
Периодически (раз в 6-12 мес) — генерируйте новый ключ, разворачивайте, удаляйте старый.
- Сгенерировать новый:
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_prod_2026-07. - Скопировать на все серверы:
ssh-copy-id -i newkey.pub server. - Проверить вход по новому — с параметром
-i newkey. - Удалить старый из
~/.ssh/authorized_keysна всех серверах (grep -v "old-comment"). - Обновить
~/.ssh/config— заменить IdentityFile.
Никогда не удаляйте старый ключ, не проверив новый на всех серверах. Держите вторую SSH-сессию открытой на случай ошибки.