Что такое SSH ключи и зачем они нужны?
SSH ключи — это способ входа на сервер без пароля. Вместо секретного слова используется пара криптографических ключей: приватный остаётся у вас, публичный лежит на сервере. Подобрать такой ключ перебором невозможно, а перехват соединения ничего не даёт — приватный ключ никогда не покидает ваш компьютер.
authorized_keys и шлёт случайное число — challenge.
ssh user@host
challenge 9f3a…
sign(challenge) → 4d7b…
verify ✓ сессия открыта
Какой тип SSH ключа выбрать?
Все четыре алгоритма решают одну задачу, но отличаются стойкостью, скоростью и поддержкой в старом ПО. Если сомневаетесь — берите ED25519.
ssh-keygen -t ed25519 -C "user@host"ssh-keygen -t rsa -b 4096 -C "user@host"ssh-keygen -t ecdsa -b 521 -C "user@host"ssh-keygen -t dsa -C "user@host"Где используются SSH ключи
Один и тот же ключ подходит для серверов, Git-хостингов и облаков — достаточно добавить публичную часть туда, куда нужен доступ.
~/.ssh/authorized_keys
git@github.com:user/repo.git
cloud-init: ssh_authorized_keys
ansible-playbook -i hosts deploy.yml
PasswordAuthentication no
Как создать SSH ключ
Два пути к одному результату: онлайн-генератор в браузере или штатная утилита ssh-keygen в терминале. Итоговые файлы одинаковы.
-
1Выберите тип ключаRSA, DSA или ED25519. Для новых серверов и Git — ED25519, для старого оборудования — RSA 4096.
-
2Укажите длину и комментарийДля RSA — от 2048 бит. Комментарий не влияет на безопасность, но помогает отличать ключи: обычно это
user@hostили e-mail. -
3Нажмите «Сгенерировать»Через секунду получите приватный ключ в форматах OpenSSH и PEM и публичный — в форматах OpenSSH и SSH2.
-
4Сохраните и подключитеПриватный ключ — в
~/.ssh/с правами600. Публичный — вauthorized_keysна сервере или в настройки Git-хостинга.
ssh-keygen -t ed25519 -C "user@host"ssh-copy-id -i ~/.ssh/id_ed25519.pub user@hostssh user@hostЧасто задаваемые вопросы
Коротко о том, что чаще всего спрашивают про SSH ключи и наш генератор.
01 Какой тип SSH ключа выбрать?
Если нет особых требований — ED25519: короткий ключ, максимальная стойкость и скорость. RSA 4096 нужен только для старых систем, которые не понимают ED25519. DSA не используйте — он отключён в современных версиях OpenSSH.
02 Безопасно ли генерировать SSH ключи онлайн?
Ключи передаются по защищённому соединению и нигде не сохраняются — после закрытия страницы восстановить их невозможно. Для критичной инфраструктуры (продакшн, root-доступ) мы всё же рекомендуем создавать ключи локально командой ssh-keygen: так приватный ключ вообще не покидает вашу машину.
03 Чем приватный ключ отличается от публичного?
Приватный ключ — ваш секрет. Он хранится только у вас, им подписываются запросы на подключение. Публичный ключ можно свободно передавать: его кладут на сервер, в GitHub или облако — он позволяет только проверить подпись, но не создать её.
04 Куда положить ключ и какие права выставить?
Приватный ключ — в каталог ~/.ssh/ с правами 600 (chmod 600 ~/.ssh/id_ed25519), сам каталог — 700. Иначе SSH-клиент откажется использовать ключ с ошибкой «permissions are too open». Публичный ключ добавьте одной строкой в ~/.ssh/authorized_keys на сервере.
05 Что делать, если приватный ключ утёк?
Удалите соответствующую строку из authorized_keys на всех серверах и из настроек Git-хостингов — старый ключ сразу перестанет работать. Затем сгенерируйте новую пару и добавьте новый публичный ключ. Чтобы такое было менее болезненно, заводите отдельные ключи под разные задачи.