В чем разница между ключом OpenSSH и ключом PuTTY?

В чем разница между ключом OpenSSH и ключом PuTTY?

Я обнаружил, что 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, который разработан именно для этого.

[акцентдобавлен]

Связанный контент