Ich habe festgestellt, dass ssh-keygen
das Paket („ssh“) andere Schlüssel erzeugt als puttygen
(„Kitt" Paket).
Wenn ich öffentliche und private Schlüssel erstelle, ssh-keygen
werden meine Schlüssel von manchen SSH-Servern nicht akzeptiert. Wenn ich Schlüssel erstelle, puttygen
akzeptiert nur ein Server sie.
Warum schlagen Linux-Repositories keine gemeinsame Lösung (Paket) dafür vor?
Ich habe ein anderes Paket gefundenssh-3.2.9.1das Schlüssel erstellt, die mit PuTTY funktionieren. Aber warum gibt es keine praktische Lösung in SSH?
Antwort1
OpenSSH ist die De-facto-Standardimplementierung des SSH-Protokolls. Wenn sich PuTTY und OpenSSH unterscheiden, ist PuTTY das inkompatible.
Wenn Sie mit OpenSSH und ssh-keygen
den Standardoptionen einen Schlüssel generieren, funktioniert dieser mit praktisch jedem Server. Ein Server, der einen solchen Schlüssel nicht akzeptiert, wäre veraltet, würde eine andere SSH-Implementierung verwenden oder auf eine seltsam restriktive Weise konfiguriert sein. Schlüssel eines nicht standardmäßigen Typs 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 zumKonvertierenzwischen seinem eigenen .ppk
Format und dem Format von OpenSSH.
Dieses ssh-3.2.9.1, das Sie gefunden haben, istein kommerzielles Produktwelches sein eigenes, anderes privates Schlüsselformat hat. Es gibt keinen Grund, es anstelle von OpenSSH zu verwenden. Es kann nur weniger kompatibel sein, es ist kostenpflichtig und es gibt so gut wie keine Tutorials zur Verwendung.
Antwort2
Die meisten Linux-Distributionen haben PuTTY (Paketname putty
) für Linux verfügbar. Sie können PuTTY auf der Linux-Seite installieren und verwenden, puttygen
um die .ppk-Dateien in die regulären ssh
Schlüsseldateien (sogenannte PEM-Dateien – auch wenn sie kein .pem im Dateinamen haben) zu konvertieren.
puttygen id_dsa.ppk -O private-openssh -o id_dsa
NOTIZ:Sie können auch PEM-Formatdateien wieder in PuTTY puttygen
importieren .ssh
Der Autor von PuTTY hat sich für Einfachheit entschieden, daher sind die öffentlichen und privaten Schlüssel, die die zugrunde liegende Sicherheit von PuTTY bilden,SSH-2Schlüsselauthentifizierung werden in einer einzigen proprietären .ppk-Datei gespeichert. Normalerweise werden diese Schlüssel von als zwei separate Dateien verwaltet ssh
.
Unter Linux werden die Schlüsseldateien normalerweise im Verzeichnis.ssh.
Einen guten Überblick über den Konvertierungsprozess finden Sie hier in dieser Stack Overflow-Frage mit dem Titel:Konvertieren Sie PEM in das PPK-Dateiformat.
Der Autor von PuTTY erläutert auch seine Gründe für die Verwendung von .ppk-Dateien imPuTTY-Benutzerhandbuch. Sie können hier im Abschnitt 8.2.12 mehr darüber lesen.
Antwort3
Beide speichern ein "RSA-Schlüsselpaar für Version 2 des SSH-Protokolls" und könnenumgewandeltaustauschbar; hinsichtlich des tatsächlich gespeicherten Formatunterschieds gilt jedoch:
aushttps://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/key-formats-natively.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,so dass der Client Sie nach Ihrer Passphrase fragen muss, bevor er überhaupt etwas mit dem Schlüssel tun kann. Konkret bedeutet dies, dass er nach Ihrer Passphrase fragen muss, bevor er überhauptAngebotden öffentlichen Schlüssel an den Server zur Authentifizierung. Das Format von PuTTY speichert den öffentlichen Schlüssel im Klartext und verschlüsselt nur die private Hälfte, was 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 es wird nur dann nach einer Passphrase fragen, wenn es wirklich nötig ist.
Ich denke, OpenSSH liest.pub
zu diesem Zweck eine Datei, wenn sie neben der privaten Schlüsseldatei erscheint, aber das ist oft eine Quelle der Verwirrung und Bequemlichkeit (ich habe Leute gesehen, die eine private Schlüsseldatei ersetzt und eine veraltete.pub
daneben gelassen haben und dann sehr verwirrt waren vom resultierenden SSH-Authentifizierungsprozess!).- Der Schlüssel ist vollständig manipulationssicher.Schlüsselformate, die den öffentlichen Schlüssel im Klartext speichern, können anfällig für Manipulationsangriffe sein, bei denen die öffentliche Hälfte des Schlüssels so verändert wird, dass Signaturen, die mit dem manipulierten Schlüssel erstellt wurden, Informationen über die private Hälfte preisgeben. Aus diesem GrundDas Schlüsselformat von PuTTY enthält einen MAC (Message Authentication Code), der auf der Passphrase basiert und die öffentliche und die private Hälfte des Schlüssels abdeckt.Somit bieten wir den Komfort, den öffentlichen Schlüssel im Klartext zur Verfügung zu haben, erkennen aber auch sofort jeden Manipulationsversuch und bieten eine Kombination aus Sicherheit und Komfort, die meines Erachtens bei keinem anderen Schlüsselformat zu finden ist. Als Nebeneffekt deckt der MAC auch den Kommentar des Schlüssels ab und verhindert so jeden möglichen Schaden, der entstehen könnte, wenn jemand zwei Schlüssel austauscht und die Kommentare vertauscht.
Der Ansatz von OpenSSH, den öffentlichen Schlüssel verschlüsselt zu haltenkönntebieten ebenfalls einen gewissen Schutz gegen diese Art von Angriff, aber es ist unklar, ob sie wirklichen Schutz bieten: Verschlüsselungen, die auf Vertraulichkeit ausgelegt sind, bieten oft Möglichkeiten, wie Angreifer die verschlüsselten Daten nutzbringend verändern können. Für echten Integritätsschutz benötigen Sie einen echten dedizierten MAC, der genau für diesen Zweck ausgelegt ist.
[Schwerpunkthinzugefügt]