Wo befinden sich meine privaten / öffentlichen SSH-Schlüssel unter UNIX?

16

Ich beginne zu verstehen, wie RSA- und Public / Private Key-Systeme funktionieren, und ich frage mich, wo mein privater und öffentlicher SSH-Schlüssel gespeichert sind. Wenn ich zu meinem Ausgangsverzeichnis gehe und mein .ssh-Verzeichnis (cd .ssh) durchsuche, wird nur die Datei "known_hosts" angezeigt, die vermutlich die öffentlichen Schlüssel verschiedener bekannter Remote-SSH-Server enthält.

Wo finde ich diese Schlüssel? Ich kann mich übrigens nicht einmal daran erinnern, sie erstellt zu haben, aber da ich bereits zuvor SSH-Verbindungen hergestellt habe, müssen sie sich irgendwo befinden.

Ich verwende OpenSSH_5.2p1 mit MAC OS 10.6.

Vielen Dank!

Michael Eilers Smith
quelle

Antworten:

14

~/.ssh/id_rsaund ~/id_rsa.pubnormalerweise. Daraus folgt jedoch nicht, dass ssh ein Paar erstellen und speichern muss: ssh verwendet im Wesentlichen das SSL-Protokoll, das einen Sitzungsschlüssel mithilfe des Diffie / Hellman- Schlüsselaustauschalgorithmus oder einer Variante erstellt. Das heißt, der Handshake, der die Verbindung herstellt, generiert einen Sitzungsschlüssel und verwirft ihn, wenn die Sitzung abgeschlossen ist.

Informieren Sie sich über den Algorithmus, dann ist es ziemlich raffinierte: ziemlich einfache mathematische verwenden, es wird ein Schlüssel zu den beiden Enden der Verbindung bekannt , ohne jemals das Senden des Schlüssels über die Verbindung.

Charlie Martin
quelle
Bedeutet das, dass RSA nie verwendet wurde, wenn ich nie gebeten wurde, SSH-Schlüssel zu generieren? Mit anderen Worten, dass ein asymmetrischer Algorithmus zur Freigabe des Sitzungsschlüssels verwendet wurde, die temporären öffentlichen / privaten Schlüssel für die Verbindung jedoch nicht auf meinem Computer gespeichert waren?
Das ist genau richtig Tatsächlich ist die Verschlüsselung symmetrisch - asymmetrische Algorithmen sind für das Streaming nicht gut geeignet. Mit dem Diffie-Hellman wird ein Sitzungsschlüssel für die symmetrische Verschlüsselung generiert. Wenn Sie stattdessen ein öffentliches / privates Schlüsselpaar verwenden, werden diese in einem anderen Handshake verwendet, um einen Sitzungsschlüssel für den symmetrischen Algorithmus zu erstellen.
Charlie Martin
@mieli: Nein. Sie wurden nie geschaffen. publickeyist nur eine mögliche Authentifizierungsmethode von vielen; Wenn Sie sich einfach mit passwordoder angemeldet haben keyboard-interactive, wurde das Passwort selbst gesendet. (Hinweis: Verwechseln Sie nicht den Benutzerschlüssel, den
Hostschlüssel
@grawity wir sind uns hier größtenteils einig, aber lassen Sie uns ein wenig vorsichtig sein. Der Diffie-Hellman-Schlüsselaustausch hängt mit RSA und anderen asymmetrischen Verschlüsselungsalgorithmen zusammen und ist im Wesentlichen asymmetrisch, da beide Seiten des Austauschs ihre eigene "Hälfte" der endgültigen Vereinbarung haben. Sie tun zwei Teile des Schlüssels haben, und die eventuellen Schlüssel und der genaue Prozess zu bauen sie werden am Ende der Sitzung verworfen. Sie sind jedoch nicht der öffentliche und der private Teil eines RSA-Paares.
Charlie Martin
4

Ihre persönlichen öffentlichen und privaten SSH-Schlüssel werden normalerweise gespeichert in:

$HOME/.ssh/id_dsa     (private key)
$HOME/.ssh/id_dsa.pub (public key)

Oder sie könnte sein , id_rsaund id_rsa.pubwenn Sie RSA - Schlüssel erstellt , anstatt DSA - Schlüssel (OpenSSH unterstützt beide Formen).

Die Tatsache, dass Sie zuvor SSH-Verbindungen hergestellt haben, bedeutet jedoch nicht, dass Sie SSH-Schlüssel haben. Wenn der sshBefehl Ihren persönlichen Schlüssel nicht finden kann, werden Sie zur Eingabe eines Kennworts für das ferne System aufgefordert. Dies ist weniger sicher als die Verwendung von Schlüsseln.

Normalerweise sollten Sie Ihren privaten SSH-Schlüssel mit einer Passphrase erstellen. Wenn Sie es ohne eine Passphrase erstellen, kann sich jemand als Sie ausgeben, der eine Kopie Ihres privaten Schlüssels erhält. ssh-agentMit dieser Option können Sie einen Schlüssel mit einer Passphrase verwenden, ohne die Passphrase bei jeder Verwendung erneut eingeben zu müssen.

Keith Thompson
quelle
2

Wenn Sie nicht ein Schlüsselpaar erstellt haben, werden Sie wahrscheinlich nicht haben ein.

Der SSH2-Verkehr wird mit einem symmetrischen Sitzungsschlüssel verschlüsselt , der mithilfe von DH-, ECDH-Algorithmen oder GSSAPI-Schlüsselaustausch erstellt wird. Weder der Hostschlüssel noch der Benutzerschlüssel werden zum Verschlüsseln von Daten verwendet. Der einzige Zweck ist die Authentifizierung .

Denken Sie jetzt daran, dass SSH mehrere Authentifizierungsmethoden unterstützt : Zusätzlich publickeyakzeptieren fast alle Server die einfache passwordund / oder keyboard-interactive, bei der keine Schlüsselerzeugung oder -verwendung stattfindet - das Kennwort wird einfach zur Überprüfung an den Remote-Server gesendet.

Mit anderen Worten: "Da ich ssh-Verbindungen bereits hergestellt habe, müssen sie sich irgendwo befinden" ist falsch - das Benutzerschlüsselpaar ist nicht erforderlich, um Verbindungen herzustellen.


Wenn Sie haben ein Schlüsselpaar erstellen, wird es wahrscheinlich in sein ~/.ssh/id_*- zum Beispiel id_rsafür das Standard - RSA - Schlüsselpaar, id_ecdsafür ECDSA, id_dsafür DSA. Obwohl diese Dateien enthalten sowohl private und öffentliche Teile des Keypair wird der öffentliche Teil in der Regel automatisch in eine separate extrahiert id_*.pubDatei für die Bequemlichkeit ( id_rsa.pubfür id_rsaund so weiter).

user1686
quelle