![В чем разница между ключом OpenSSH и ключом PuTTY?](https://rvso.com/image/31646/%D0%92%20%D1%87%D0%B5%D0%BC%20%D1%80%D0%B0%D0%B7%D0%BD%D0%B8%D1%86%D0%B0%20%D0%BC%D0%B5%D0%B6%D0%B4%D1%83%20%D0%BA%D0%BB%D1%8E%D1%87%D0%BE%D0%BC%20OpenSSH%20%D0%B8%20%D0%BA%D0%BB%D1%8E%D1%87%D0%BE%D0%BC%20PuTTY%3F.png)
Я обнаружил, что ssh-keygen
(пакет "ssh") создает разные ключи из puttygen
("замазка" упаковка).
Если я создам публичные и приватные ключи, то ssh-keygen
некоторые серверы SSH не примут мои ключи. Если я создам ключи, то puttygen
только один сервер примет их.
Почему репозитории Linux не предлагают какого-либо общего решения (пакета) для этой проблемы?
Я нашел другой пакетssh-3.2.9.1который создает ключи, которые работают с PuTTY. Но почему нет удобного решения в SSH?
решение1
OpenSSH — это стандартная реализация протокола SSH де-факто. Если PuTTY и OpenSSH различаются, то PuTTY — несовместимый.
Если вы сгенерируете ключ с помощью OpenSSH, используя ssh-keygen
параметры по умолчанию, он будет работать практически с любым сервером. Сервер, который не принимает такой ключ, будет устаревшим, использующим другую реализацию SSH или настроенным странным ограничительным образом. Ключи нестандартного типа могут не поддерживаться на некоторых серверах. В частности, ключи ECDSA делают установление сеанса немного быстрее, но они поддерживаются только последними версиями OpenSSH.
PuTTY использует другой формат файла ключа. Он поставляется с инструментами дляконвертироватьмежду собственным .ppk
форматом и форматом OpenSSH.
Этот ssh-3.2.9.1, который вы нашли, этокоммерческий продукткоторый имеет свой собственный другой формат закрытого ключа. Нет никаких причин использовать его вместо OpenSSH. Он может быть только менее совместимым, требует оплаты, и нет практически никаких руководств по его использованию.
решение2
В большинстве дистрибутивов Linux есть PuTTY (имя пакета putty
), доступный для Linux. Вы можете установить PuTTY на стороне Linux и использовать его puttygen
для преобразования файлов .ppk в ssh
файлы ключей обычного стиля (называемые файлами PEM — даже если они не получают .pem в имени файла).
puttygen id_dsa.ppk -O private-openssh -o id_dsa
ПРИМЕЧАНИЕ:Вы также можете использовать его puttygen
для импорта ssh
файлов стилей PEM обратно в PuTTY.
Автор PuTTY выбрал простоту, поэтому открытый и закрытый ключи, составляющие базовую систему безопасности, используемую PuTTY/СШ-2ключ аутентификации, хранятся в одном проприетарном файле .ppk. Обычно эти ключи поддерживаются в виде двух отдельных файлов ssh
.
В Linux ключевые файлы обычно хранятся в каталоге.ssh.
Хороший обзор процесса конвертации можно найти в этом вопросе на Stack Overflow под названием:Конвертировать формат файла PEM в PPK.
Автор PuTTY также обсуждает свое обоснование использования файлов .ppk вРуководство пользователя PuTTY. Вы можете прочитать об этом здесь, в разделе 8.2.12.
решение3
Они оба хранят «пару ключей RSA для версии 2 протокола SSH» и могут бытьпреобразованныйвзаимозаменяемы; однако, что касается фактической разницы в сохраненном формате:
отhttps://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/key-formats-natively.html
Преимущества формата ключей PuTTY:
- Открытая половина ключа хранится в открытом виде.Формат закрытого ключа OpenSSH шифрует весь файл ключа,так что клиент должен попросить у вас вашу парольную фразу, прежде чем он сможет что-либо сделать с ключом. В частности, это означает, что он должен попросить у вас вашу парольную фразу, прежде чем он сможет дажепредложениеоткрытый ключ на сервер для аутентификации. Формат PuTTY хранит открытый ключ в виде открытого текста и шифрует только закрытую половину, что означает, что он может автоматически отправлять открытый ключ на сервер и определять, готов ли сервер принимать аутентификации с этим ключом, и он будет запрашивать парольную фразу только в том случае, если это действительно необходимо.
Я думаю, что OpenSSH прочитает.pub
файл для этой цели, если он появляется рядом с файлом закрытого ключа, но это является источником путаницы так же часто, как и удобство (я видел, как люди заменяли файл закрытого ключа и оставляли устаревший.pub
рядом с ним, а затем были очень смущены полученным процессом аутентификации SSH!).- Ключ полностью защищен от несанкционированного доступа.Форматы ключей, которые хранят открытый ключ в виде открытого текста, могут быть уязвимы для атаки с подделкой, при которой открытая половина ключа изменяется таким образом, что подписи, сделанные с помощью поддельного ключа, приводят к утечке информации о закрытой половине. По этой причине,Формат ключа PuTTY содержит MAC (код аутентификации сообщения), отделенный от парольной фразы и охватывающий открытую и закрытую половины ключа.Таким образом, мы обеспечиваем удобство доступа к открытому ключу в виде открытого текста, но мы также мгновенно обнаруживаем любую попытку атаки с подделкой, предоставляя комбинацию безопасности и удобства, которую, как я считаю, нельзя найти ни в одном другом формате ключа. В качестве побочного преимущества MAC также покрывает комментарий ключа, предотвращая любые возможные неприятности, которые могли бы быть возможны, если бы кто-то поменял два ключа и поменял местами комментарии.
Подход OpenSSH к хранению открытого ключа в зашифрованном видемощьтакже обеспечивают некоторую защиту от этого типа атак, но неясно, обеспечивает ли это надлежащую защиту: шифрование, разработанное для конфиденциальности, часто оставляет пути, по которым зашифрованные данные могут быть полезно изменены злоумышленником. Для настоящей защиты целостности вам нужен настоящий выделенный MAC, который разработан именно для этого.
[акцентдобавлен]