GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Konvertieren Sie den privaten Openssh-Schlüssel in den privaten Ssh2-Schlüssel?

Gibt es eine Möglichkeit, ein vorhandenes Paar von OpenSSH-Schlüsseln in das Schlüsselpaar von SSH2 (ssh.com-Format) zu konvertieren?

UPD :da es einige Antworten zu ssh-keygen gibt plötzlich auftaucht, erkläre ich, woher ich komme (es wird auch eine nette Antwort auf „Was hast du versucht?“) sein.

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

Mit anderen Worten, ssh-keygen gibt dieselben Schlüssel für private und öffentliche Eingabeschlüssel zurück (Hashes von Originaldateien sind offensichtlich unterschiedlich, ich habe sie zweimal überprüft, um sicherzustellen, dass es sich um gültige private und öffentliche Schlüssel handelt). Es scheint dieses ssh-keygen zu sein generiert nur öffentliche Schlüssel für private oder öffentliche Eingabeschlüssel.

Mache ich es falsch oder ist es ein normales Verhalten?

Akzeptierte Antwort:

Dieses Tutorial mit dem Titel:SSH:Convert OpenSSH to SSH2 and vice versa scheint das zu bieten, wonach Sie suchen.

OpenSSH-Schlüssel in SSH2-Schlüssel umwandeln

Führen Sie die OpenSSH-Version von ssh-keygen aus auf Ihrem öffentlichen OpenSSH-Schlüssel, um ihn in das Format zu konvertieren, das von SSH2 auf dem Remote-Computer benötigt wird. Dies muss auf dem System erfolgen, auf dem OpenSSH ausgeführt wird.

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

SSH2-Schlüssel in OpenSSH-Schlüssel umwandeln

Führen Sie die OpenSSH-Version von ssh-keygen aus auf Ihrem öffentlichen ssh2-Schlüssel, um ihn in das von OpenSSH benötigte Format zu konvertieren. Dies muss auf dem System erfolgen, auf dem OpenSSH ausgeführt wird.

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

Das Tutorial zeigt weiterhin, wie man die verschiedenen Arten von Schlüsseln generiert und sie in andere Formate exportiert.

Für private und öffentliche Schlüssel verwenden?

Laut der Manpage wäre die Antwort ein Ja. Schauen Sie sich die Manpage für ssh-keygen an es besagt folgendes für -e Schalter:

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

Aber in der Praxis scheint ssh-keygen kann keine privaten Schlüssel konvertieren, nur öffentliche.

Zum Beispiel:

# 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

Ein Blick auf die resultierenden extrahierten Schlüssel bestätigt dies:

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

Ich habe ein bisschen gegoogelt und bin auf diesen Klappentext aus einem Artikel mit dem Titel gestoßen:How do you convert OpenSSH Private key files to SSH. Die Website schien auf und ab zu sein, aber als ich im Google-Cache nach dieser Seite suchte, fand ich den folgenden Klappentext:

Wie konvertiert man private OpenSSH-Schlüsseldateien in private SSH.com-Schlüsseldateien?

Das Programm ssh-keygen kann das nicht, obwohl die meisten Handbuchseiten
sagen, dass es möglich ist. Sie raten davon ab, mehrere öffentliche
Schlüssel zu verwenden. Das einzige Problem ist, dass RCF Ihnen nicht erlaubt,
mehr als einen öffentlichen Schlüssel zu registrieren.

Der Artikel behandelt weiterhin eine Methode zum Konvertieren eines privaten Openssh-Schlüssels in einen privaten ssh.com-Schlüssel durch die Verwendung von PuTTYs puttygen Werkzeug. HINWEIS: puttygen kann unter Windows &Linux ausgeführt werden.

Öffnen Sie „puttygen“ und generieren Sie ein öffentliches/privates 2048-Bit-rsa-Schlüsselpaar.
Stellen Sie sicher, dass Sie nach der Generierung ein Passwort hinzufügen. Speichern Sie den öffentlichen
Schlüssel als „puttystyle.pub“ und den privaten Schlüssel als „puttystyle“. Das
Putty-Programm und die SSH.com-Programme teilen sich ein gemeinsames Public-Key-Format
, aber das Putty-Programm und OpenSSH haben unterschiedliche Public-Key-Formate.
Wir werden später darauf zurückkommen. Sie sollten in der Lage sein, beide
puttystyle-Schlüssel in das Putty-Programm zu laden. Die Formate der privaten Schlüssel
für putty und SSH.com sind jedoch nicht identisch, sodass Sie
eine konvertierte Datei erstellen müssen. Gehen Sie zum Konvertierungsmenü und exportieren Sie einen
SSH.com-Schlüssel. Speichern Sie es als „sshstyle“. Gehen Sie nun zurück zum Konvertierungsmenü
und exportieren Sie einen openssh-Schlüssel. Speichern Sie es als „openssh“. Diese Namen
sind willkürlich und Sie können Ihre eigenen wählen. Sie müssen später
die Namen für die Installation auf einem OpenSSH-Rechner ändern. Siehe unten.

Angesichts des oben Gesagten habe ich Folgendes mit puttygen ausgearbeitet , unter Verwendung unseres zuvor generierten privaten/öffentlichen OpenSH-Schlüsselpaars:

# 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

Die Kommentierung ist anders, sodass Sie die resultierenden Dateien nicht einfach vergleichen können. Wenn Sie sich also die ersten Zeilen der Schlüssel ansehen, ist dies ein ziemlich guter Indikator dafür, dass die obigen Befehle erfolgreich waren.

Verwandte:Ubuntu – Wie konfiguriere ich externe IP-Adressen für LXC-Gäste?

Vergleich öffentlicher ssh.com-Schlüssel:

$ 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

Vergleich öffentlicher openssh-Schlüssel:

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

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

Linux
  1. So importieren Sie den privaten Schlüssel in FileZilla für SFTP

  2. Einen Hardlink in einen symbolischen Link umwandeln?

  3. Private Schlüssel über Maschinen hinweg teilen?

  4. Umfassender Leitfaden für die Einrichtung der SSH2-schlüsselbasierten Authentifizierung

  5. Einrichtung der SSH-schlüsselbasierten Authentifizierung von openSSH zu SSH2

Konvertieren Sie Ihre Windows-Installation in eine VM unter Linux

So konvertieren Sie Bilder in das ASCII-Format unter Linux

So richten Sie den öffentlichen und privaten SSH-Schlüssel unter Linux ein

Melden Sie sich unter Linux und macOS mit einem privaten SSH-Schlüssel an

So konvertieren Sie den privaten Schlüssel von PuTTY (.ppk) in einen SSH-Schlüssel

Konvertieren Sie die ls-Ausgabe in csv