Какая разница между ключом openssh и ключом putty?

48

Я обнаружил, что ssh-keygen(пакет "ssh") производит различные ключи из puttygen(пакет "putty").

Если я создаю открытый и закрытый ключи на ssh-keygenнекоторых ssh-серверах, мои ключи не будут приниматься. Если я создаю ключи puttygenтолько с одним сервером, я принимаю его.

Почему репозитории linux не предлагают какое-то общее решение (пакет) для него? Я нашел другой пакет ssh-3.2.9.1, который создает ключи, которые работают с putty. Но почему в SSH нет удобного решения?

YarLinux
источник
1
Для начала PuTTYGen предлагает явно конвертировать ключи. Таким образом, нативные форматы, которые OpenSSH и PuTTY используют для хранения ключей, различны. Однако поддерживаемые алгоритмы совместимы. Я бы предположил, что вы ввели какое-то необычное значение в поле, которое позволяет вам указать количество бит (например, для DSA требуется 1024 бита) для сгенерированного ключа в PuTTYGen или, в качестве альтернативы, вы выбрали что-то вроде RSA-1. которые большинство серверов будут отключены в эти дни. К сожалению, в вопросе не указано, что вы пытались и ожидали.
0xC0000022L

Ответы:

47

OpenSSH является фактической стандартной реализацией протокола SSH. Если PuTTY и OpenSSH различаются, несовместимым является PuTTY.

Если вы сгенерируете ключ с помощью OpenSSH, используя параметры ssh-keygenпо умолчанию, он будет работать практически с каждым сервером. Сервер, который не принимает такой ключ, будет устаревшим, использующим другую реализацию SSH или настроенным странным ограничительным способом. На некоторых серверах ключи нестандартного типа могут не поддерживаться, в частности ключи ECDSA значительно ускоряют установление сеанса, но поддерживаются только последними версиями OpenSSH.

PuTTY использует другой формат файла ключа. Он поставляется с инструментами для преобразования между собственным .ppkформатом и форматом OpenSSH.

Этот ssh-3.2.9.1, который вы нашли, является коммерческим продуктом, который имеет свой собственный формат закрытого ключа. Нет смысла использовать его вместо OpenSSH, он может быть только менее совместимым, требовать оплаты, и у нас практически нет учебника по его использованию.

Жиль "ТАК - перестань быть злым"
источник
24

Большинство дистрибутивов Linux puttyдоступны для Linux. Вы можете установить puttyна стороне Linux и использовать puttygenдля преобразования файлов .ppk в обычные файлы ключей стиля ssh (называемые файлами PEM - даже если они не получают .pem в имени файла).

puttygen id_dsa.ppk -O private-openssh -o id_dsa

ПРИМЕЧАНИЕ. Вы также можете использовать puttygenдля импорта файлов PEM в стиле ssh обратно в putty.

Автор PuTTY выбрал простоту, поэтому открытый и закрытый ключи, которые составляют основную защиту, используемую при аутентификации с помощью ключа putty / ssh 2, хранятся в одном проприетарном файле .ppk. Обычно эти ключи хранятся в ssh как 2 отдельных файла.

В Linux файлы ключей обычно хранятся в каталоге .ssh.

Здесь есть хороший обзор процесса конвертации в этом вопросе переполнения стека под названием: Преобразовать PEM в формат файла PPK .

Автор putty также обсуждает свое обоснование использования файлов .ppk в руководстве puttyпользователя . Вы можете прочитать об этом здесь, в разделе 8.2.12.

ОДС
источник
Вы имеете в виду, что мой Linux имеет устаревший и уязвимый SSH-1 (если я не использую замазку)? И это доступно? Уязвимости SSH-1 описаны в википедии
YarLinux
Не уверен, откуда ты это взял. Нет, ты должен быть в порядке. Какую версию Linux вы используете? Какой дистрибутив Linux вы используете? Выполните эту команду , чтобы узнать вашу версию Linux: uname -a. Linux дистрибутив: lsb_release -a.
slm
Я использую Ubuntu 12.04. Вы имеете в виду, что SSH-2 имеет разные форматы? Я просто смутил имя пакета и команду, которая "ssh".
YarLinux
Понимаю. Инструмент ssh, на который вы ссылаетесь, обычно является частью пакета openssh. Версия этого программного обеспечения не имеет ничего общего с SSH-1 и SSH-2, на которые вы ссылаетесь. Эта терминология (SSH-1 и SSH-2) относится к типу файла ключа, с которым вы работаете. Этот тип файла не должен быть проблемой для вас, если вы используете последние версии openssh.
slm
Есть три разных формата ключей? OpenSSH, ssh.com и PuTTY?
YarLinux
12

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

[ выделение добавлено]

PeanutPower
источник