Converte a chave privada OpenSSH na chave privada SSH2

23

Existe uma maneira de converter pares existentes de chaves OpenSSH para o par de chaves SSH2 (formato ssh.com)?

UPD : uma vez que existem algumas respostas sobre ssh-keygen apareceu de repente, eu vou explicar de onde eu vim (também será uma boa resposta sobre "o que você tentou?").

$> diff --report-identical-files <(ssh-keygen -e -f ~/.ssh/id_dsa) <(ssh-keygen -e -f ~/.ssh/id_dsa.pub)
Files /tmp/zshAGGWAK and /tmp/zshPZiIr6 are identical

Em outras palavras, ssh-keygen retorna as mesmas chaves para chaves de entrada privadas e públicas (os hashes dos arquivos originais são obviamente diferentes, eu os verifiquei duas vezes para garantir que sejam chaves públicas e privadas válidas). Parece que ssh-keygen gera apenas chave pública para chave de entrada privada ou pública.

Estou fazendo errado ou é um comportamento normal?

    
por ДМИТРИЙ МАЛИКОВ 23.07.2013 / 08:36

1 resposta

35

Este tutorial intitulado: SSH: Converter OpenSSH para SSH2 e vice-versa parece oferecer o que você está procurando.

Converter chave OpenSSH para chave SSH2

Execute a versão OpenSSH de ssh-keygen em sua chave pública OpenSSH para convertê-la no formato necessário para 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 a chave SSH2 para a chave OpenSSH

Execute a versão do OpenSSH de ssh-keygen em sua chave pública ssh2 para convertê-la no formato necessário para o 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 exportá-las para outros formatos.

Use isso para private & chaves públicas?

De acordo com a página man, a resposta seria um sim. Olhando para a página de manual de ssh-keygen , indica o seguinte para a opção -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.

Mas, na prática, parece que ssh-keygen não pode 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

Examinar 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 texto de um artigo intitulado: Como você converte arquivos de chave privada do OpenSSH para SSH . O site parecia estar em alta, mas procurando em cache do Google para esta página encontrei a seguinte sinopse:

How do you convert OpenSSH Private key files to SSH.com Private key files?

It cannot be done by the ssh-keygen program even though most man pages say it can. They discourage it so that you will use multiple public keys. The only problem is that RCF will not allow you to register more than one public key.

O artigo aborda um método para converter uma chave privada openssh em uma chave privada ssh.com através do uso de ferramenta do PuTTY puttygen . OBSERVAÇÃO: puttygen pode ser executado no Windows & Linux.

Open 'puttygen' and generate a 2048 bit rsa public/private key pair. Make sure you add a password after it is generated. Save the public key as "puttystyle.pub" and save the private key as "puttystyle". The putty program and SSH.com programs share a common public-key format but the putty program and OpenSSH have different public-key formats. We will come back to this, later. You should be able to load both puttystyle keys into the putty program. However, the private key formats for putty and SSH.com are not the same and so you will have to create a converted file. Go to the conversions menu and export an SSH.com key. Save it as "sshstyle". Now go back to the conversions menu and export an openssh key. Save it as "openssh". These names are arbitrary and you can choose your own. You will have to change the names for installation on an OpenSSH machine, later. See below.

Dado o acima, eu usei 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

O comentário é diferente, então você não pode simplesmente comparar os arquivos resultantes, então se você olhar 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
    
por 23.07.2013 / 17:07