GNU/Linux >> Tutoriels Linux >  >> Linux

Convertir la clé privée Openssh en clé privée Ssh2 ?

Existe-t-il un moyen de convertir une paire de clés OpenSSH existante en paire de clés SSH2 (format ssh.com) ?

UPD :puisqu'il y a des réponses sur ssh-keygen est soudainement apparu, je vais vous expliquer d'où je viens (ce sera aussi une belle réponse sur "qu'avez-vous essayé ?").

$> 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

En d'autres termes, ssh-keygen renvoie les mêmes clés pour les clés d'entrée privées et publiques (les hachages des fichiers d'origine sont évidemment différents, je les ai vérifiés deux fois pour m'assurer qu'ils sont des clés privées et publiques valides). Il semble que ssh-keygen génère uniquement la clé publique pour la clé d'entrée privée ou publique.

Je le fais mal ou c'est un comportement normal ?

Réponse acceptée :

Ce tutoriel intitulé :SSH :Convertir OpenSSH en SSH2 et vice versa semble offrir ce que vous recherchez.

Convertir la clé OpenSSH en clé SSH2

Exécutez la version OpenSSH de ssh-keygen sur votre clé publique OpenSSH pour la convertir au format requis par SSH2 sur la machine distante. Cela doit être fait sur le système exécutant OpenSSH.

$ ssh-keygen -e -f ~/.ssh/id_dsa.pub > ~/.ssh/id_dsa_ssh2.pub

Convertir la clé SSH2 en clé OpenSSH

Exécutez la version OpenSSH de ssh-keygen sur votre clé publique ssh2 pour la convertir au format requis par OpenSSH. Cela doit être fait sur le système exécutant OpenSSH.

$ ssh-keygen -i -f ~/.ssh/id_dsa_1024_a.pub > ~/.ssh/id_dsa_1024_a_openssh.pub

Le didacticiel montre ensuite comment générer les différents types de clés et comment les exporter vers d'autres formats.

L'utiliser pour les clés privées et publiques ?

Selon la page de manuel, la réponse serait oui. En regardant la page de manuel pour ssh-keygen il indique ce qui suit pour le -e commutateur :

 -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.

Mais en pratique, il semblerait que ssh-keygen ne peut pas convertir les clés privées, uniquement les clés publiques.

Par exemple :

# 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

L'examen des clés extraites résultantes le confirme :

$ grep BEGIN newkey_e newkey.pub_e 
newkey_e:---- BEGIN SSH2 PUBLIC KEY ----
newkey.pub_e:---- BEGIN SSH2 PUBLIC KEY ----

En cherchant un peu sur Google, je suis tombé sur ce texte de présentation d'un article intitulé :Comment convertir les fichiers de clé privée OpenSSH en SSH. Le site semblait être de haut en bas, mais en regardant dans le cache de Google pour cette page, j'ai trouvé le texte de présentation suivant :

Comment convertir les fichiers de clé privée OpenSSH en fichiers de clé privée SSH.com ?

Cela ne peut pas être fait par le programme ssh-keygen même si la plupart des pages de manuel
le disent. Ils le déconseillent afin que vous utilisiez plusieurs clés publiques
. Le seul problème est que RCF ne vous permettra pas d'enregistrer plus
d'une clé publique.

L'article décrit ensuite une méthode de conversion d'une clé privée openssh en une clé privée ssh.com grâce à l'utilisation de puttygen de PuTTY. outil. REMARQUE : puttygen peut être exécuté à partir de Windows et Linux.

Ouvrez "puttygen" et générez une paire de clés publique/privée rsa de 2048 bits.
Assurez-vous d'ajouter un mot de passe après sa génération. Enregistrez la clé publique
sous "puttystyle.pub" et enregistrez la clé privée sous "puttystyle". Le
programme putty et les programmes SSH.com partagent un format de clé publique commun
mais le programme putty et OpenSSH ont des formats de clé publique différents.
Nous y reviendrons plus tard. Vous devriez pouvoir charger les deux
clés puttystyle dans le programme putty. Cependant, les formats de clé privée
pour putty et SSH.com ne sont pas les mêmes et vous devrez donc
créer un fichier converti. Accédez au menu des conversions et exportez une clé
SSH.com. Enregistrez-le sous "sshstyle". Revenez maintenant au menu des conversions
et exportez une clé openssh. Enregistrez-le sous "openssh". Ces noms
sont arbitraires et vous pouvez choisir le vôtre. Vous devrez changer
les noms pour l'installation sur une machine OpenSSH, plus tard. Voir ci-dessous.

Compte tenu de ce qui précède, j'ai élaboré ce qui suit en utilisant puttygen , en utilisant notre paire de clés opensh privée/publique précédemment générée :

# 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

Les commentaires sont différents, vous ne pouvez donc pas simplement comparer les fichiers résultants, donc si vous regardez les premières lignes des touches, c'est un assez bon indicateur que les commandes ci-dessus ont réussi.

En relation :Ubuntu – Comment configurer des adresses IP externes pour les invités LXC ?

Comparaison des clés publiques 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

Comparaison des clés publiques openssh :

$ cut -c 1-100 newkey.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFkZdpmbze9c6pT883rE1i64TJd4wbz9x/w6I2DmSZVI9TJa6M9jgGE952QsOY

$ cut -c 1-100 newkey.pub_puttygen-openssh 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFkZdpmbze9c6pT883rE1i64TJd4wbz9x/w6I2DmSZVI9TJa6M9jgGE952QsOY

Linux
  1. Comment importer une clé privée dans FileZilla pour SFTP

  2. Comment convertir un fichier PPK en clés OpenSSH et se connecter en utilisant SSH sous Linux ?

  3. Convertir un lien physique en lien symbolique ?

  4. Guide complet pour la configuration de l'authentification basée sur la clé SSH2

  5. Configuration de l'authentification basée sur la clé SSH d'openSSH à SSH2

Convertissez votre installation Windows en VM sous Linux

Comment convertir des images au format ASCII sous Linux

Comment configurer la clé publique et privée SSH sous Linux

Connectez-vous avec une clé privée SSH sous Linux et macOS

Comment convertir la clé privée de PuTTY (.ppk) en clé SSH

SSH de A à B vers C, en utilisant la clé privée sur B