Este tutorial intitulado: SSH: converta OpenSSH para SSH2 e vice-versa parece oferecer o que você está procurando.
Converter chave OpenSSH em chave SSH2
Execute a versão do OpenSSH ssh-keygen
na sua chave pública do OpenSSH para convertê-la no formato necessário ao SSH2 na máquina remota. Isso deve ser feito no sistema executando o OpenSSH.
$ ssh-keygen -e -f ~/.ssh/id_dsa.pub > ~/.ssh/id_dsa_ssh2.pub
Converter chave SSH2 em chave OpenSSH
Execute a versão do OpenSSH ssh-keygen
na sua chave pública ssh2 para convertê-la no formato necessário ao OpenSSH. Isso precisa ser feito no sistema executando o OpenSSH.
$ ssh-keygen -i -f ~/.ssh/id_dsa_1024_a.pub > ~/.ssh/id_dsa_1024_a_openssh.pub
O tutorial continua mostrando como gerar os vários tipos de chaves e como exportá-los para outros formatos.
Use isso para chaves públicas e privadas?
De acordo com a página do manual, a resposta seria um sim. Olhando para a página de manual, ssh-keygen
ele afirma o seguinte para a -e
opção:
-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.
Mas, na prática, parece que ssh-keygen
não é possível converter chaves privadas, apenas públicas.
Por exemplo:
# 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
Observar as chaves extraídas resultantes confirma isso:
$ grep BEGIN newkey_e newkey.pub_e
newkey_e:---- BEGIN SSH2 PUBLIC KEY ----
newkey.pub_e:---- BEGIN SSH2 PUBLIC KEY ----
Pesquisando um pouco no Google, deparei-me com este resumo de um artigo intitulado: Como você converte arquivos de chave privada do OpenSSH em SSH . O site parecia estar desativado, mas, procurando no cache do Google por esta página , encontrei o seguinte sinopse:
Como você converte os arquivos de chave privada do OpenSSH em arquivos de chave privada do SSH.com?
Isso não pode ser feito pelo programa ssh-keygen, embora a maioria das páginas de manual diga que sim. Eles o desencorajam, para que você use várias chaves públicas. O único problema é que o RCF não permitirá que você registre mais de uma chave pública.
O artigo continua abordando um método para converter uma chave privada openssh em uma chave privada ssh.com através do uso da ferramenta PuTTY puttygen
. NOTA: puttygen
pode ser executado no Windows e Linux.
Abra 'puttygen' e gere um par de chaves pública / privada de 2048 bits rsa. Certifique-se de adicionar uma senha após ser gerada. Salve a chave pública como "puttystyle.pub" e salve a chave privada como "puttystyle". O programa putty e os programas SSH.com compartilham um formato de chave pública comum, mas o programa putty e o OpenSSH têm diferentes formatos de chave pública. Voltaremos a isso mais tarde. Você deve poder carregar as duas chaves de estilo de massa no programa de massa. No entanto, os formatos de chave privada para putty e SSH.com não são os mesmos e, portanto, você precisará criar um arquivo convertido. Vá para o menu de conversões e exporte uma chave SSH.com. Salve-o como "sshstyle". Agora volte ao menu de conversões e exporte uma tecla openssh. Salve-o como "openssh". Esses nomes são arbitrários e você pode escolher os seus. Você precisará alterar os nomes para instalação em uma máquina OpenSSH posteriormente. Ver abaixo.
Dado o exposto, elaborei o seguinte usando puttygen
, usando nosso par de chaves openssh privado / público gerado anteriormente:
# 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
Os comentários são diferentes, então você não pode apenas comparar os arquivos resultantes; portanto, se você observar as primeiras linhas das teclas, é um bom indicador de que os comandos acima foram bem-sucedidos.
Comparação de chaves públicas do 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
Comparação de chaves openssh públicas:
$ 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 -
. Hashes de arquivos originais são diferentes, obviamente. Parece que ele retorna a chave pública para a chave de entrada pública ou privada.ssh-keygen
ao devolver chaves públicas. Eu elaborei um método baseado em pesquisas adicionais. LMK se for aceitável.puttygen <OpenSSH_priv_key> -O public -o id_rsa_ssh2_puttygen{.pub}
(-O
significa tipo de saída e arquivo de-o
saída ). Isso gera chaves públicas e privadas ssh2 a partir de uma chave privada rsa de 2048 bits gerada pelo OpenSSH 7.0. Não está funcionando no cliente Win Phone 7.5 (* O cliente SSH de Tommi Pirttiniemi). Mas obrigado a @ ДМИТРИЙМАЛИКОВ e @slm por uma ótima resposta de qualquer maneira. @Otheus puttygen vem com o Arch.putty
ssh-keygen
não exportará uma chave privada no formato pem, mas converterá uma chave privada openssh existente para o formato pem, substituindo o original. Tudo que você precisa fazer é editar a senha.O comando para converter seu
~/.ssh/id_rsa
arquivo do formato OpenSSH para o formato SSH2 (pem) é:Em seguida, forneça a senha (antiga) e a nova no prompt. Eles podem ser os mesmos ou até ambos ficarem em branco. Ou você pode fornecê-los na linha de comando usando as opções
-P
(frase antiga) e-N
(nova frase secreta). Por exemplo, se a senha estiver em branco e você desejar mantê-la dessa maneira:fonte