Что такое формат файла PPK?
Файл .ppk - это PuTTY Private Key, текстовый контейнер для закрытого SSH-ключа в собственном формате PuTTY, созданный инструментом генерации ключей PuTTYgen и используемый в PuTTY, WinSCP, FileZilla и совместимых SSH-клиентах.
Файл хранит пару SSH-ключей (компоненты как открытого, так и закрытого ключа) в структурированном многострочном текстовом виде. Первая строка определяет версию формата и алгоритм ключа, например:
PuTTY-User-Key-File-3: ssh-ed25519
За ней следуют поля заголовка для типа шифрования и комментария, затем блоки в кодировке Base64 для открытого ключа, опционально зашифрованного закрытого ключа и MAC для проверки целостности.
Существует три версии формата:
- PPK v1 - устаревший формат;
- PPK v2 - использовался в PuTTY до версии 0.75; защита паролем использует KDF на базе SHA-1 и AES-256-CBC; целостность проверяется с помощью HMAC-SHA-1;
- PPK v3 - представлен в PuTTY 0.75 (январь 2021 г.); заменяет SHA-1 KDF на Argon2id, что значительно усложняет перебор пароля; использует HMAC-SHA-256.
PuTTYgen может обновить ключ v2 до v3 на месте. Чтобы использовать ключ .ppk со стандартными инструментами OpenSSH (ssh, scp, sftp), его необходимо сначала экспортировать в PEM или новый формат OpenSSH через PuTTYgen; эти два формата не являются напрямую взаимозаменяемыми.
Файлы PPK обычно имеют размер 1-4 КБ независимо от алгоритма ключа (RSA, DSA, ECDSA, Ed25519).
Безопасность и защита
РИСК: HIGHФайлы PPK содержат данные закрытого ключа - это эквивалент пароля для всех серверов, где авторизован соответствующий открытый ключ. PPK без пароля дает немедленный доступ по SSH в случае кражи злоумышленником. Всегда защищайте ключ надежным паролем. Используйте формат PPK v3 (PuTTY 0.75+) для более сильной защиты пароля Argon2id. Никогда не храните незашифрованные файлы PPK на общих дисках и не включайте их в репозитории исходного кода. Сайты, предлагающие «открыть» или «просмотреть» файлы PPK онлайн, опасны - загрузка закрытого ключа на сторонний ресурс равносильна передаче пароля.
Детали формата
в двух словахПрограммы, открывающие файлы PPK
puttygen key.ppk -O private-openssh -o ~/.ssh/id_rsa для конвертации под использование с ssh. puttygen key.ppk -O private-openssh -o key.pem - конвертирует в формат OpenSSH PEM для использования с ssh/scp/sftp. Технические подробности
глубокая спецификация| Кодировка | Текстовая (заголовки ASCII/UTF-8; внутри бинарные данные ключа в Base64) |
| Сигнатура файла | Первая строка буквально «PuTTY-User-Key-File-N: algorithm» (N = 2 или 3); определяет версию и алгоритм ключа |
| Версии формата | v1 (устарела); v2 (PuTTY <0.75, HMAC-SHA-1, KDF на базе SHA-1); v3 (PuTTY 0.75+, Argon2id KDF, HMAC-SHA-256) |
| Алгоритмы ключей | ssh-rsa, ssh-dss (DSA), ecdsa-sha2-nistp256/384/521, ssh-ed25519, ssh-ed448 |
| Шифрование паролем | AES-256-CBC; v2 использует KDF на базе SHA-1; v3 использует Argon2id (KDF с интенсивным использованием памяти) - существенно сильнее против перебора |
| Проверка целостности | HMAC-SHA-1 (v2) или HMAC-SHA-256 (v3), вычисляемый по открытому ключу, закрытому ключу, имени алгоритма и комментарию |
| Структура | Многострочные заголовки ключ/значение + блоки Base64: строки открытого ключа, строки закрытого ключа, Private-MAC; v3 добавляет строки параметров Argon2 KDF при шифровании |
| Типичный размер | 1 КБ - 4 КБ независимо от алгоритма ключа |
| Совместимость | Напрямую несовместим с инструментами OpenSSH; должен быть экспортирован в PEM или новый формат OpenSSH через PuTTYgen |
| Содержимое | Компоненты как открытого, так и закрытого ключа в одном файле |
| Примечание по безопасности | PPK v2 с HMAC на базе SHA-1 считается менее надежным; рекомендуется обновить ключи формата v2 до v3 с помощью PuTTYgen |
| Выпущен | Early 2000s (PuTTY 0.4x era); PPK v3 introduced with PuTTY 0.75 (2021) |
| Последняя версия | PPK version 3 (PuTTY 0.75+, 2021) |
| Спецификация | tartarus.org |
Конвертации PPK
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах PPK.
Часто задаваемые вопросы
Как конвертировать файл PPK в PEM для Linux/macOS?
brew install putty (macOS) или apt install putty-tools (Linux). Затем выполните: puttygen key.ppk -O private-openssh -o key.pemКак открыть файл PPK в Windows?
В чем разница между PPK v2 и PPK v3?
Можно ли использовать файл PPK напрямую в OpenSSH?
puttygen. OpenSSH не поддерживает формат PPK нативно.Мой файл PPK запрашивает пароль, но я его забыл.
authorized_keys на сервере.