Этот учебник под названием: SSH: конвертируйте OpenSSH в SSH2, и, наоборот, кажется, предлагает то, что вы ищете.
Конвертировать ключ OpenSSH в ключ SSH2
Запустите версию OpenSSH ssh-keygen
на вашем открытом ключе OpenSSH, чтобы преобразовать его в формат, необходимый SSH2 на удаленной машине. Это должно быть сделано в системе, в которой работает OpenSSH.
$ ssh-keygen -e -f ~/.ssh/id_dsa.pub > ~/.ssh/id_dsa_ssh2.pub
Конвертировать ключ SSH2 в ключ OpenSSH
Запустите версию OpenSSH для ssh-keygen
вашего открытого ключа ssh2, чтобы преобразовать его в формат, необходимый для OpenSSH. Это необходимо сделать в системе, в которой работает OpenSSH.
$ ssh-keygen -i -f ~/.ssh/id_dsa_1024_a.pub > ~/.ssh/id_dsa_1024_a_openssh.pub
Далее учебник покажет, как генерировать ключи различных типов и как экспортировать их в другие форматы.
Использовать это для закрытых и открытых ключей?
Согласно справочной странице, ответ будет положительным. Глядя на справочную страницу для ssh-keygen
этого заявляет следующее для -e
переключателя:
-e This option will read a private or public OpenSSH key file and print
the key in RFC 4716 SSH Public Key File Format to stdout. This option
allows exporting keys for use by several commercial SSH implementations.
Но на практике может показаться, что ssh-keygen
нельзя конвертировать закрытые ключи, только открытые.
Например:
# Make a new RSA key-pair
$ ssh-keygen -t rsa -f newkey
# attempt to extract the private key
$ ssh-keygen -e -f newkey > newkey_e
# attempt to extract the public key
$ ssh-keygen -e -f newkey.pub > newkey.pub_e
# Notice the supposed extracted private key (newkey_e) and the corresponding extracted public key (newkey.pub_e) have identical `md5sum`'s.
$ for i in *;do md5sum $i;done
d1bd1c12c4a2b9fee4b5f8f83150cf1a newkey
8b67a7be646918afc7a041119e863be5 newkey_e
13947789d5dcc5322768bd8a2d3f562a newkey.pub
8b67a7be646918afc7a041119e863be5 newkey.pub_e
Просмотр полученных извлеченных ключей подтверждает это:
$ grep BEGIN newkey_e newkey.pub_e
newkey_e:---- BEGIN SSH2 PUBLIC KEY ----
newkey.pub_e:---- BEGIN SSH2 PUBLIC KEY ----
Погуглив немного, я наткнулся на эту рекламу из статьи под заголовком: Как конвертировать файлы закрытого ключа OpenSSH в SSH . Сайт, казалось, работал вверх и вниз, но, глядя в кеш Google на эту страницу, я обнаружил следующую ошибку:
Как конвертировать файлы закрытого ключа OpenSSH в файлы закрытого ключа SSH.com?
Это не может быть сделано программой ssh-keygen, даже если большинство справочных страниц говорят, что это возможно. Они препятствуют этому, чтобы вы использовали несколько открытых ключей. Единственная проблема заключается в том, что RCF не позволит вам зарегистрировать более одного открытого ключа.
Далее в статье рассматривается метод преобразования закрытого ключа openssh в закрытый ключ ssh.com с помощью инструмента PuTTY puttygen
. ПРИМЕЧАНИЕ: puttygen
может быть запущен из Windows и Linux.
Откройте «puttygen» и сгенерируйте 2048-битную пару открытый / закрытый ключ RSA. Убедитесь, что вы добавили пароль после его создания. Сохраните открытый ключ как «puttystyle.pub» и сохраните закрытый ключ как «puttystyle». Программа замазки и программы SSH.com имеют общий формат открытого ключа, но программа замазки и OpenSSH имеют разные форматы открытого ключа. Мы вернемся к этому позже. Вы должны быть в состоянии загрузить оба ключа puttystyle в программу putty. Однако форматы закрытых ключей для putty и SSH.com не совпадают, поэтому вам придется создать преобразованный файл. Перейдите в меню конверсий и экспортируйте ключ SSH.com. Сохраните это как "sshstyle". Теперь вернитесь в меню конверсий и экспортируйте ключ openssh. Сохраните его как "openssh". Эти имена являются произвольными, и вы можете выбрать свои собственные. Вам придется изменить имена для установки на компьютер OpenSSH, позже. Увидеть ниже.
Учитывая вышесказанное, я разработал следующее puttygen
, используя нашу ранее созданную пару открытых / открытых ключей openssh:
# generate ssh.com private key from private openssh key
$ puttygen newkey -O private-sshcom -o newkey.puttygen-sshcom
# generate ssh.com public key from private openssh key
$ puttygen newkey -O public -o newkey.pub_puttygen-sshcom
# generate openssh public key from private openssh key (for confirmation)
$ puttygen newkey -O public-openssh -o newkey.pub_puttygen-openssh
Комментирование отличается, поэтому вы не можете просто сравнить полученные файлы, поэтому, если вы посмотрите на первые несколько строк клавиш, это довольно хороший показатель того, что вышеприведенные команды были успешными.
Сравнение открытых ключей ssh.com:
$ tail -n +3 newkey.pub_e | head -1 | cut -c 1-60
AAAAB3NzaC1yc2EAAAADAQABAAABAQDFkZdpmbze9c6pT883rE1i64TJd4wb
$ tail -n +3 newkey.pub_puttygen-sshcom | head -1 | cut -c 1-60
AAAAB3NzaC1yc2EAAAADAQABAAABAQDFkZdpmbze9c6pT883rE1i64TJd4wb
Сравнение открытых ключей openssh:
$ cut -c 1-100 newkey.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFkZdpmbze9c6pT883rE1i64TJd4wbz9x/w6I2DmSZVI9TJa6M9jgGE952QsOY
$ cut -c 1-100 newkey.pub_puttygen-openssh
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFkZdpmbze9c6pT883rE1i64TJd4wbz9x/w6I2DmSZVI9TJa6M9jgGE952QsOY
$> a="$(ssh-keygen -e -f ~/.ssh/id_rsa)m"; b="$(ssh-keygen -e -f ~/.ssh/id_rsa.pub)m"; md5sum <<< $a; md5sum <<< $b ce615aa3e39e274d0bd81064399cedf8 - ce615aa3e39e274d0bd81064399cedf8 -
. Хеши оригинальных файлов разные, ессно. Похоже, что он возвращает открытый ключ для закрытого или открытого ключа ввода.ssh-keygen
возвращает открытые ключи. Я разработал метод, основанный на дополнительных исследованиях. ЛМК, если это приемлемо.puttygen <OpenSSH_priv_key> -O public -o id_rsa_ssh2_puttygen{.pub}
(-O
обозначает выходной тип и-o
выходной файл ). Он генерирует закрытые и открытые ключи ssh2 из закрытого ключа rsa 2048 бит, сгенерированного OpenSSH 7.0. Не работает на клиенте Win Phone 7.5 (* Клиент SSH от Tommi Pirttiniemi). Но все равно спасибо @ ДМИТРИЙМАЛИКОВ и @slm за отличный ответ. @ Отеус Путтиген идетputty
на Арка.ssh-keygen
не будет экспортировать закрытый ключ в формате pem, но преобразует существующий закрытый ключ openssh в формат pem, перезаписывая оригинал. Все, что вам нужно сделать, это отредактировать пароль.Команда для преобразования вашего
~/.ssh/id_rsa
файла из формата OpenSSH в формат SSH2 (pem):Затем введите (старый) и новый пароль в командной строке. Они могут быть одинаковыми или даже оба могут быть пустыми. Или вы можете указать их в командной строке, используя опции
-P
(старая фраза-пароль) и-N
(новая фраза-пароль). Например, если парольная фраза пуста, и вы хотите сохранить ее таким образом:источник