Згенеруйте пару ключів SSH або RSA без встановлення програм
Цей генератор створює нову пару ключів Ed25519, ECDSA (P-256, P-384, P-521) або RSA (2048, 3072, 4096 біт) за допомогою Web Crypto API вашого браузера та експортує її так, як вам потрібно: приватний ключ OpenSSH і рядок <code>authorized_keys</code>, точно такі, як створив би <code>ssh-keygen</code>; файли PEM PKCS#8 і SPKI для OpenSSL, TLS і бібліотек JWT; публічний JWK; а також відбиток <code>SHA256:</code>. Ключі створюються на вашому пристрої, а приватний ключ ніколи не залишає цю сторінку.
Як згенерувати пару ключів SSH
- 1Виберіть тип ключа: Ed25519 — сучасний вибір за замовчуванням для SSH; обирайте RSA для старих серверів і для ключів підпису PEM або JWT.
- 2За бажанням введіть коментар, зазвичай
user@host, щоб потім упізнати ключ вauthorized_keys. - 3Натисніть Згенерувати. Завантажте приватний ключ як
id_ed25519(абоid_rsa,id_ecdsa), а публічний — під тією ж назвою з.pub. - 4Перемістіть обидва файли в
~/.ssh/, виконайтеchmod 600 ~/.ssh/id_ed25519і додайте рядок публічного ключа до~/.ssh/authorized_keysна сервері або в налаштування SSH-ключів вашого Git-сервісу.
Який тип ключа обрати?
- Ed25519
- Компактний (публічний ключ — 68 символів), швидкий і стійкий до помилок реалізації. Підтримується OpenSSH 6.5 і новішими, GitHub, GitLab та будь-яким сучасним сервером. Найкращий вибір для SSH сьогодні.
- ECDSA (P-256, P-384, P-521)
- Криві NIST, потрібні, коли їх вимагають правила відповідності або коли Ed25519 не приймається, як у деяких апаратних токенах і хмарних сервісах ключів.
- RSA
- Найширша сумісність, зокрема з дуже старими SSH-серверами та багатьма бібліотеками TLS і JWT (RS256). Використовуйте щонайменше 3072 біти для ключів, які мають служити після 2030 року; 2048 — мінімум, який досі вважається прийнятним.
Формати коротко
- Приватний ключ OpenSSH
- <code>-----BEGIN OPENSSH PRIVATE KEY-----</code> — формат, який <code>ssh-keygen</code> записує за замовчуванням. Тут він створюється без шифрування; парольну фразу можна додати пізніше командою <code>ssh-keygen -p -f id_ed25519</code>.
- Публічний ключ OpenSSH
- Один рядок, <code>ssh-ed25519 AAAA… comment</code>, для <code>authorized_keys</code>, GitHub, GitLab і хмарних консолей.
- Приватний ключ PKCS#8 (PEM)
- <code>-----BEGIN PRIVATE KEY-----</code> — стандартний контейнер, який читають OpenSSL, Java, Node.js, Go та більшість бібліотек JWT для будь-якого типу ключа.
- Публічний ключ SPKI (PEM)
- <code>-----BEGIN PUBLIC KEY-----</code> — форма X.509 SubjectPublicKeyInfo, що використовується для перевірки підписів і в налаштуваннях перевірки JWT.
- JWK
- Публічний ключ у JSON (RFC 7517) з відбитком <code>kid</code>, готовий до публікації в endpoint JWKS.
Відбитки ключів
Відбиток — це хеш SHA-256 публічного ключа у wire-форматі SSH, закодований у Base64 без доповнення: SHA256:…. Саме його виводить ssh-keygen -lf id_ed25519.pub, показує GitHub біля кожного ключа і показує SSH, коли просить довіритися новому хосту. Порівняння відбитків дозволяє переконатися, що дві копії публічного ключа — це той самий ключ.
Чи безпечно генерувати ключі в браузері?
Ключі створює crypto.subtle.generateKey — вбудована криптографія браузера, яка використовує безпечний генератор випадкових чисел операційної системи, те саме джерело, що й ssh-keygen. Нічого не надсилається мережею: можна відкрити цю сторінку, відключитися від інтернету та генерувати ключі офлайн.
Для ключів, що захищають продакшн-системи, найбезпечніше місце для їх створення — машина, яка ними користуватиметься, з командою ssh-keygen -t ed25519, або апаратний ключ. Цей інструмент чудово підходить для тестових середовищ, ключів розгортання CI, ключів підпису JWT і машин без OpenSSH. Щоб переглянути сертифікат на основі такого ключа, скористайтеся декодером сертифікатів.
Поширені запитання
- Як згенерувати SSH-ключ онлайн?
- Виберіть Ed25519, введіть коментар, наприклад свою пошту, натисніть «Згенерувати» та завантажте приватний (id_ed25519) і публічний (id_ed25519.pub) ключі. Покладіть обидва в ~/.ssh і додайте рядок із .pub на сервер або у свій Git-сервіс.
- Ed25519 кращий за RSA?
- Для SSH — так: ключі Ed25519 значно коротші, швидші в роботі й дають безпеку, порівнянну з RSA-3072. Обирайте RSA лише для систем, які не підтримують Ed25519.
- Чому Ed25519 недоступний у моєму браузері?
- Ed25519 з'явився у Web Crypto API у Firefox 129, Safari 17 і Chrome 137. У старішому браузері оновіть його або виберіть ECDSA чи RSA.
- Чи можна додати парольну фразу до приватного ключа?
- Ключ створюється без неї. Додайте її на своєму комп'ютері командою ssh-keygen -p -f ~/.ssh/id_ed25519, яка зашифрує файл на місці.
- Як перетворити ключ у формат .ppk для PuTTY?
- Відкрийте PuTTYgen, виберіть Load, вкажіть завантажений приватний ключ OpenSSH і збережіть його як приватний ключ. PuTTYgen читає формат OpenSSH напряму.
- Який файл потрібно розмістити на сервері?
- Лише публічний ключ — єдиний рядок файлу .pub, доданий до ~/.ssh/authorized_keys. Приватний ключ залишається на вашому комп'ютері, і ним ніколи не слід ділитися.
- Чому SSH каже, що права доступу до мого приватного ключа надто відкриті?
- SSH відхиляє приватні ключі, які можуть читати інші користувачі. Виконайте chmod 600 для файлу приватного ключа та chmod 700 для каталогу ~/.ssh.
- Чи надсилаються ключі на сервер?
- Ні. Їх генерує Web Crypto API вашого браузера на цій сторінці, і вони існують лише в пам'яті, доки ви їх не завантажите чи не скопіюєте.