Was ist der Unterschied zwischen openssh key und putty key?

48

Ich habe festgestellt, dass ssh-keygen("ssh" -Paket) andere Schlüssel erzeugt als puttygen("putty" -Paket).

Wenn ich mit ssh-keygeneinigen SSH-Servern öffentliche und private Schlüssel erstelle , werden meine Schlüssel nicht akzeptiert. Wenn ich Schlüssel mit puttygennur einem Server erstelle, wird dies akzeptiert.

Warum schlagen Linux-Repositorys keine gemeinsame Lösung (Paket) dafür vor? Ich habe ein anderes Paket ssh-3.2.9.1 gefunden , das Schlüssel erstellt, die mit Putty funktionieren. Aber warum gibt es in SSH keine praktikable Lösung?

YarLinux
quelle
1
Für den Anfang bietet PuTTYGen explizit an , Schlüssel zu konvertieren . Daher unterscheiden sich die nativen Formate, die OpenSSH und PuTTY zum Speichern von Schlüsseln verwenden. Die unterstützten Algorithmen sind jedoch kompatibel. Vermutlich haben Sie in das Feld einen unkonventionellen Wert eingegeben, mit dem Sie die Anzahl der Bits (z. B. scheint DSA 1024 Bit zu erfordern ) für den in PuTTYGen generierten Schlüssel angeben können, oder Sie haben sich für RSA-1 entschieden Welche Server werden heutzutage deaktiviert sein? Leider gibt die Frage nicht wirklich an, was Sie versucht und erwartet haben.
0xC0000022L

Antworten:

47

OpenSSH ist die De-facto-Standardimplementierung des SSH-Protokolls. Wenn sich PuTTY und OpenSSH unterscheiden, ist PuTTY nicht kompatibel.

Wenn Sie mit OpenSSH einen Schlüssel mit ssh-keygenden Standardoptionen generieren , funktioniert er mit praktisch jedem Server. Ein Server, der einen solchen Schlüssel nicht akzeptiert, ist veraltet, verwendet eine andere SSH-Implementierung oder ist auf seltsame Weise restriktiv konfiguriert. Nicht standardmäßige Schlüssel werden auf einigen Servern möglicherweise nicht unterstützt. Insbesondere ECDSA-Schlüssel beschleunigen den Sitzungsaufbau geringfügig, werden jedoch nur von neueren Versionen von OpenSSH unterstützt.

PuTTY verwendet ein anderes Schlüsseldateiformat. Es enthält Tools zum Konvertieren zwischen dem eigenen .ppkFormat und dem OpenSSH-Format.

Das von Ihnen gefundene ssh-3.2.9.1 ist ein kommerzielles Produkt mit einem eigenen, unterschiedlichen privaten Schlüsselformat. Es gibt keinen Grund, es anstelle von OpenSSH zu verwenden, es kann nur weniger kompatibel sein, es ist kostenpflichtig und es gibt ungefähr keine Anleitung, wie man es dort draußen verwendet.

Gilles 'SO - hör auf böse zu sein'
quelle
24

Die meisten Linux-Distributionen sind puttyfür Linux verfügbar. Sie können puttyauf Linux-Seite installieren und puttygendie PPK-Dateien in die regulären SSH-Schlüsseldateien (sogenannte PEM-Dateien) konvertieren, obwohl der Dateiname keine PEM-Datei enthält.

puttygen id_dsa.ppk -O private-openssh -o id_dsa

HINWEIS: Sie können auch puttygenPEM-Dateien im ssh-Stil wieder in importieren putty.

Der Autor von PuTTY entschied sich für die Einfachheit, sodass die öffentlichen und privaten Schlüssel, die die zugrunde liegende Sicherheit für die Putty / SSH 2-Schlüsselauthentifizierung darstellen, in einer einzigen proprietären PPK-Datei gespeichert werden. Normalerweise werden diese Schlüssel von ssh als zwei separate Dateien verwaltet.

Unter Linux werden die Schlüsseldateien normalerweise im Verzeichnis .ssh gespeichert.

In dieser Frage zum Stapelüberlauf mit dem Titel " PEM in PPK-Dateiformat konvertieren" finden Sie einen guten Überblick über den Konvertierungsprozess .

Der Autor von putty erläutert auch seine Gründe für die Verwendung von .ppk-Dateien im puttyBenutzerhandbuch . Sie können es hier in Abschnitt 8.2.12 nachlesen.

slm
quelle
Meinst du, mein Linux hat veraltetes und anfälliges SSH-1 (wenn ich keinen Kitt benutze)? Und ist es erschwinglich? Sicherheitslücken von SSH-1 werden in Wikipedia
YarLinux,
Ich bin mir nicht sicher, woher du das hast. Nein, es sollte dir gut gehen. Welche Linux-Version verwenden Sie? Welche Linux-Distribution verwenden Sie? Führen Sie diesen Befehl , um herauszufinden , Ihre Linux - Version: uname -a. Linux - Distribution: lsb_release -a.
slm
Ich benutze Ubuntu 12.04. Meinst du, SSH-2 hat verschiedene Formate? Ich habe nur mit dem Namen des Pakets und dem Befehl "ssh" verwechselt.
YarLinux
Aha. Das ssh-Tool, auf das Sie sich beziehen, ist normalerweise Teil eines Pakets mit dem Namen openssh. Die Version dieser Software hat nichts mit SSH-1 und SSH-2 zu tun, auf die Sie sich beziehen. Diese Terminologie (SSH-1 und SSH-2) bezieht sich auf den Typ der Schlüsseldatei, mit der Sie arbeiten. Dieser Dateityp sollte für Sie kein Problem darstellen, solange Sie die neuesten Versionen von openssh verwenden.
slm
Gibt es drei verschiedene Schlüsselformate? OpenSSH, ssh.com und PuTTY?
YarLinux
12

Beide speichern ein "RSA-Schlüsselpaar für Version 2 des SSH-Protokolls" und können austauschbar konvertiert werden. Bezüglich des tatsächlich gespeicherten Formatunterschieds:

von https://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/key-formats-nively.html

Die Vorteile des PuTTY-Schlüsselformats sind:

  • Die öffentliche Hälfte des Schlüssels wird im Klartext gespeichert . Das private Schlüsselformat von OpenSSH verschlüsselt die gesamte Schlüsseldatei , sodass der Client Sie nach Ihrer Passphrase fragen muss, bevor er mit dem Schlüssel überhaupt etwas anfangen kann. Dies bedeutet insbesondere, dass Sie nach Ihrer Passphrase gefragt werden müssen, bevor Sie dem Server den öffentlichen Schlüssel zur Authentifizierung anbieten können . Das PuTTY-Format speichert den öffentlichen Schlüssel im Klartext und verschlüsselt nur die private Hälfte. Dies bedeutet, dass es den öffentlichen Schlüssel automatisch an den Server senden und feststellen kann, ob der Server bereit ist, Authentifizierungen mit diesem Schlüssel zu akzeptieren, und immer nur nach a fragt Passphrase, wenn es wirklich sein muss.

    Ich denke OpenSSH wird einen lesen.pubDatei für diesen Zweck, wenn sie neben der privaten Schlüsseldatei angezeigt wird, dies ist jedoch ebenso häufig eine Verwirrung (ich habe gesehen, wie Leute eine private Schlüsseldatei ersetzen und eine veraltete Datei .pubdaneben lassen und dann sehr veraltet sind) verwirrt durch den daraus resultierenden SSH-Authentifizierungsprozess!).
  • Der Schlüssel ist vollständig manipulationssicher. Schlüsselformate, in denen der öffentliche Schlüssel im Klartext gespeichert ist, können anfällig für Manipulationsangriffe sein, bei denen die öffentliche Hälfte des Schlüssels so geändert wird, dass Signaturen, die mit dem behandelten Schlüssel erstellt wurden, Informationen über die private Hälfte verlieren. Aus diesem Grund enthält das Schlüsselformat von PuTTY einen MAC (Message Authentication Code), der von der Passphrase getrennt ist und die öffentliche und die private Hälfte des Schlüssels abdeckt.So bieten wir den Komfort, den öffentlichen Schlüssel im Klartext zur Verfügung zu haben, erkennen aber auch sofort jeden Versuch, einen Manipulationsangriff durchzuführen, und bieten eine Kombination aus Sicherheit und Komfort, die meines Erachtens in keinem anderen Schlüsselformat zu finden ist. Als Nebeneffekt deckt der MAC auch den Kommentar des Schlüssels ab und verhindert so möglichen Unfug, der möglich wäre, wenn jemand zwei Schlüssel austauschen und die Kommentare austauschen würde.

    OpenSSHs Ansatz, den öffentlichen Schlüssel verschlüsselt zu halten, könntebieten auch etwas Sicherheit gegen diese Art von Angriff, aber es ist unklar, ob sie angemessenen Schutz bietet: Die für die Vertraulichkeit konzipierte Verschlüsselung lässt häufig Möglichkeiten offen, wie die verschlüsselten Daten von einem Angreifer sinnvoll geändert werden können. Für einen echten Integritätsschutz benötigen Sie einen echten dedizierten MAC, der genau dafür ausgelegt ist.

[ Hervorhebung hinzugefügt]

PeanutPower
quelle