devopscodepro
Язык
Работает полностью в браузере — данные не покидают страницу.

SSH-ключи

Пары Ed25519, сгенерированные в браузере, отпечатки и конвертация форматов для любого публичного ключа, плюс конструкторы ограничений authorized_keys и hashed known_hosts.

Вставьте публичный ключ, чтобы увидеть тип, отпечаток и оба текстовых формата.

Работа с SSH-ключами, а не против них

Четыре смежные задачи в одном месте. Разбор: вставьте любой публичный ключ — однострочник OpenSSH или блок RFC 4716, строка authorized_keys с опциями тоже подойдёт — и получите тип, размер, отпечаток SHA-256 и оба текстовых формата. Генерация: свежая пара Ed25519, созданная в браузере через CSPRNG Web Crypto; приватный ключ собирается в стандартный контейнер openssh-key-v1, который принимают ssh-keygen и любой OpenSSH.

Конструктор authorized_keys — там, где живёт ценность для безопасности: deploy-ключ, который может выполнить одну команду из одной сети, без TTY и без форвардинга, — принципиально меньший риск, чем голая строка ключа. Конструктор собирает from=, command=, expiry-time= и no-* флаги ровно в том синтаксисе, которого ждёт sshd.

Конструктор known_hosts выдаёт hashed-записи (формат HashKnownHosts) — вид, который не раскрывает имена хостов вашей инфраструктуры, если файл когда-нибудь утечёт.

Безопасно ли генерировать ключ в браузере?

Случайность берётся из того же CSPRNG, что и у нативных инструментов, и ничего не покидает страницу — проверяется вкладкой Network. Честная оговорка — окружение: на машине со зловредными расширениями надёжного места для генерации нет вообще, что в браузере, что в терминале. Для особо ценных ключей — аппаратный токен.

Почему Ed25519, а не RSA?

Ed25519 — текущий дефолт OpenSSH: ключи по 68 символов вместо сотен, подписи быстрее, и нет параметров, которые можно выбрать неправильно. RSA остаётся для legacy-систем, которые старше него; если нужен — команда ssh-keygen -t rsa -b 4096.

Что реально даёт принудительная команда?

Что бы клиент ни попросил выполнить, sshd выполнит ваш command= — исходный запрос попадёт в SSH_ORIGINAL_COMMAND, где его может проверить скрипт. Вместе с no-pty и no-port-forwarding это превращает ключ в учётку одного назначения — ровно то, чем должны быть ключи автоматизации.

Зачем хешировать known_hosts?

Обычный known_hosts — карта всех хостов, к которым вы подключаетесь: полезная разведка, если утечёт ноутбук или бэкап. Hashed-записи проверяют хосты точно так же, но при чтении не раскрывают ничего.

Смежные инструменты: Хеширование паролей, Хеши и чексуммы и Декодер сертификатов.