Конвертирование ключей OpenSSH для PuTTY и наоборот

()

Популярным SSH-клиентом для Windows является PuTTY, на Linux же администраторы обычно используют утилиту ssh из состава пакета OpenSSH. Каждый из этих инструментов является кроссплатформенным, но за пределами "родных" платформ они используются редко.

Если есть необходимость работать как из под Windows, так и из под Linux то возникает проблема при попытке использования одних и тех же ключей с разными утилитами (они используют разные форматы хранения ключей). Далее будет показано как можно конвертировать ключи из формата OpenSSH в PPK (PuTTY) и обратно.

На Windows-машине должна быть установлена последняя версия PuTTY (обязательно вместе с puttygen.exe). На Linux-машине в зависимости от направления кодирования понадобятся ssh-keygen из состава OpenSSH и puttygen из состава PuTTY. В Debian/Ubuntu их можно установить командой:

apt-get install putty-tools openssh-client

Перекодируем на Linux-машине OpenSSH-ключ в формат PPK

Допустим что у нас есть ключ, сгенерированный командой:

ssh-keygen -t ed25519 -f mykey_ed25519

Чтобы перекодировать его в формат PPK достаточно выполнить команду:

puttygen mykey_ed25519 -o putty_key_ed25519.ppk

Перекодируем на Linux-машине PPK-ключ для использования с OpenSSH

Тут нам так же поможет утилита puttygen. Извлекаем приватный ключ:

puttygen putty_key_ed25519.ppk -O private-openssh -o openssh_key_ed25519

Извлекаем публичный ключ:

puttygen putty_key_ed25519.ppk -O public-openssh -o openssh_key_ed25519.pub

Так же публичный ключ можно извлечь командой:

ssh-keygen -i -f putty_key_ed25519.ppk > openssh_key_ed25519.pub

Перекодируем ключи Windows-машине

Здесь нам снова поможет утилита puttygen. В версии для Windows она имеет удобный графический интерфейс. Независимо от направления конвертирования необходимо в меню «Conversions» выбрать пункт «Import key» и указать исходный файл.

Конвертирование ключей с помощью puttygen

Для получения ключа в формате PPK достаточно нажать кнопку «Save private key» и указать имя файла для сохранения. Для получения приватного ключа в формате OpenSSH нужно выбрать в меню «Conversions» пункт «Export OpenSSH key» и указать имя файла.

К сожалению красивого способа получить публичный ключ в формате OpenSSH на Windows нет. Но если очень хочется то проблему решится конечно же можно:)

Для начала нужно открыть PPK-файл в любом текстовом редакторе (ВАЖНО! ключ не должен быть зашифрован!) и увидеть примерно вот такую картину:

PuTTY-User-Key-File-2: ssh-ed25519
Encryption: none
Public-Lines: 2
AAAAC3NzaC1lZDI1NTE5AAAAIPmNkIEw1hfDMl16E102K2TnQB/uHc3vwVbHYklB
ojo0
Private-Lines: 1
AAAAIJGP/+qEHF+7AyWPep5Gbs8RraFihEz3kUPeBbP0PQHz
Private-MAC: 7b4f475a723535bd82bdb997d56c089745bbe929

Здесь в строке "PuTTY-User-Key-File-2" указывается тип ключа, а цифра в строке "Public-Lines" указывает сколько строк ниже неё содержат данные публичного ключа. Достаточно собрать все эти данные в одну строчку и получится публичный ключ. В нашем примере результат будет таким:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPmNkIEw1hfDMl16E102K2TnQB/uHc3vwVbHYklBojo0

Эту строку можно сразу добавлять в authorized_keys на ваших серверах. На этом всё. Приятной работы!

Ключевые слова: putty, puttygen, ssh, ssh-keygen, openssh, ppk.

Подписаться на обновления: RSS-лента Telegram канал Twitter

Комментарии:

Новый комментарий

Жирный текстКурсивный текстПодчёркнутый текстЗачёркнутый текстПрограммный кодСсылкаИзображение




© 2006-2018 Вадим Калинников aka MooSE