Wie speichere ich SSH-Schlüssel?

Wie speichere ich SSH-Schlüssel?

Ich habe erst vor Kurzem angefangen, SSH-Schlüssel statt Passwörtern zu verwenden (dank GitHub natürlich), also bedenken Sie bitte, dass ich mit diesem ganzen Konzept noch ziemlich unerfahren bin. Momentan liegen meine Schlüssel einfach unter ~/.ssh, aber ich bin mir nicht sicher, ob das eine gute Vorgehensweise ist. Wenn ich beispielsweise mehrere Maschinen habe, müsste ich meine privaten Schlüssel duplizieren, was ich für unerwünscht halte. Oder wenn meine Festplatte kaputtgeht, verliere ich diese Schlüssel, was (nehme ich an) ebenfalls unerwünscht ist.

Was sind also die Best Practices zum sicheren, bequemen und zuverlässigen Speichern von SSH-Schlüsseln?

Die Verwendung einer Smartcard scheint eine Option zu sein (sieheSmartcards zum Speichern von GPG/SSH-Schlüsseln (Linux) – was benötige ich?), ist das das Beste?

Update: Der Grund für die Frage war, dass viele Dienste (wie GitHub, AWS EC2) Anleitungen zum Einrichten von SSH-Schlüsseln für die Verwendung des Dienstes bereitstellen, aber wenig bis gar keinen Hintergrund (wie z. B. was zu tun ist, wenn Sie bereits einen von ssh-keygen[1] generierten Schlüssel haben, welche Sicherheitsmaßnahmen empfohlen werden). Und es ist unklar, ob diese Informationen tatsächlich unwichtig sind oder ob man sie „standardmäßig“ kennen sollte.

Um die Antworten bis zu diesem Punkt zusammenzufassen(aber lesen Sie sie bitte, und wenn Sie etwas hinzuzufügen haben, dann tun Sie das bitte): in diesem Fall scheint es in Ordnung zu sein, wenn Sie Ihre privaten Schlüssel einfach in ~/.ssh belassen, solange Sie sie vor anderen Leuten geheim halten; stellen Sie aber sicher, dass Sie eine andere Möglichkeit haben, auf den Dienst zuzugreifen, um einen neuen Schlüssel hochzuladen oder zu generieren, falls Sie einen verlieren (was normalerweise der Fall ist).

[1] GitHub stellte früherHilfe zum Verwalten mehrerer Schlüssel.

Antwort1

Wenn ich beispielsweise mehrere Maschinen habe, müsste ich die privaten Schlüssel duplizieren, was ich für unerwünscht halte.

Nein, eigentlich nicht. Wenn Sie mehrere Maschinen haben, erstellen Sie einfach auf jeder einen eigenen privaten Schlüssel. Laden Sie für jeden privaten Schlüssel einfach den entsprechenden öffentlichen Schlüssel mit demselben Verfahren auf GitHub hoch.

Wenn meine Festplatte kaputt geht, verliere ich außerdem meinen privaten Schlüssel, was (vermutlich) auch unerwünscht ist.

Nicht wirklich; wenn Sie Ihren privaten Schlüssel verlieren, generieren Sie einfach einen neuen und laden Sie den entsprechenden öffentlichen Schlüssel hoch.

Sie haben Recht, dass die Duplizierung eines privaten Schlüssels höchst unerwünscht ist. Idealerweise sollte ein privater Schlüssel in einer Datei ( ~/.ssh/id_rsazum Beispiel) generiert werden und sollteniemalsLassen Sie diese Datei - das heißt, sie sollte niemals kopiert, verschoben und vor allem nicht über ein Netzwerk übertragen werden. (z. B. schließe ich sie von Backups aus) Aufgrund der Natur asymmetrischer Authentifizierungsprotokolle müssen Sie sich nur darum kümmern, Ihren privaten Schlüssel vor den Händen anderer zu schützen. Wenn Sie ein wenig übertreiben und selbst den Überblick verlieren, ist das im Allgemeinen keine große Sache. (Dies ist nicht zu verwechseln mit asymmetrischenVerschlüsselungprivate Schlüssel, z. B. GPG-Schlüssel, die Sie wahrscheinlich behalten möchten.)

Antwort2

Es gibt ein sehr schönes Tool namens KeePass2 (http://keepass.info/) mit der Erweiterung (http://lechnology.com/software/keeagent/)

Sie können dort Passwörter, SSH-Schlüssel und vieles mehr speichern (auf der offiziellen KeePass-Seite gibt es viele weitere nützliche Erweiterungen)
. Wenn Sie sich automatisch mit Ihren SSH-Schlüsseln anmelden möchten, müssen Sie nur PuTTY, Pageant und KeePass mit KeeAgent installieren. Wenn Sie es richtig konfigurieren, müssen Sie die Schlüssel nicht in PuTTY, Pageant oder FileZilla einrichten.

Ich benutze es selbst und bin ziemlich zufrieden damit. Ich habe über 30 VPS und Root-Server mit einer bestimmten Anzahl verschiedener SSH-Schlüssel und das Einzige, was ich tun muss, ist KeePass zu öffnen (es ist nicht mein primärer Passwort-Safe) und dann muss ich nur noch meine Passphrase in die Konsole eingeben.

Antwort3

Ich möchte hinzufügen, dass ~/.ssh/ von Ihrem Browser gelesen werden kann, wenn Sie zum Ausführen beider Dateien dasselbe Benutzerkonto verwenden.

Probieren Sie es aus! Richten Sie Ihren Browser aufPrivatSchlüssel in Ihrem Home-Verzeichnis. Es macht Spaß.

Daher würde ich empfehlen, SSH-Schlüssel im Home-Verzeichnis eines anderen Benutzerkontos zu speichern.

Ein Wort zu Passphrasen zum Schutz von Schlüsseln

  • Heutzutage ist das Knacken nicht zufälliger Passwörter superschnell. Schauen Sie sichHash-Katze
    • (Allerdings dauert es immer noch relativ lange, zufällige und lange Passwörter mit mehr als 12 Zeichen mit Brute-Force-Technik zu knacken)
    • Daher sind AES-verschlüsselte SSH-Schlüssel auf absehbare Zeit nicht zu knacken, solange Sie gute, lange Passphrasen verwenden. SieheGitHub-Empfehlungen
  • So können einige Websites Ihren Schlüssel ohne JavaScript erraten und ihn dann offline mit roher Gewalt erbeuten.
  • Und Browser können auch mit JS in Ihre Zwischenablage schauen. Das Kopieren und Einfügen sehr langer Passphrasen setzt Sie also auch dem Risiko ausgefeilterer JavaScript-Angriffe aus.

schau_dir_die_tasten.html

 9 <HTML>
10 <HEAD>
11 <TITLE>look at keys</TITLE>
12 </HEAD>
13 <FRAMESET cols="20%, 80%">
14   <FRAMESET rows="100, 200">
15       <FRAME src="/Users/yourname/.ssh/stuff.pem">
16       <FRAME src="blah.html">
17   </FRAMESET>
18   <FRAME src="contents_of_frame3.html">
19 </FRAMESET>
20 </HTML>

Antwort4

Sie können Ihre SSH-Schlüssel in einem separaten Verzeichnis innerhalb einer verschlüsselten Partition speichern. Anschließend können Sie SSH verwenden, um auf dieses Verzeichnis zu verweisen mit -i:

ssh -i identity_file [email protected]

Gesamte Beschreibung ( man ssh):

-i Identitätsdatei

Wählt eine Datei aus, aus der die Identität (privater Schlüssel) für die Authentifizierung mit öffentlichem Schlüssel gelesen wird. Der Standardwert ist ~/.ssh/identity für Protokollversion 1 und ~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 und ~/.ssh/id_rsa für Protokollversion 2. Identitätsdateien können in der Konfigurationsdatei auch für jeden Host einzeln angegeben werden.
Es sind mehrere -i-Optionen möglich (und mehrere Identitäten in Konfigurationsdateien angegeben). Wenn keine Zertifikate explizit durch die CertificateFile-Direktive angegeben wurden, versucht ssh auch, Zertifikatsinformationen aus dem Dateinamen zu laden, der durch Anhängen von -cert.pub an die Identitätsdateinamen erhalten wird.

Mein Sicherheitsansatz besteht darin, dass ich Informationen in private und allgemeine aufteile. Ich möchte nicht meine gesamte Home-Partition verschlüsseln, deshalb kopiere ich geheime Dateien (wie die in ~/.ssh) in eine verschlüsselte Partition.

Ich denke, dies bietet eine recht wirksame Sicherheit, da Malware in ~/.ssh nichts findet und wahrscheinlich auch nicht Ihr gesamtes System oder Ihre Shell-Profile durchsucht, um diesen Speicherort zu finden.

-F configfile 

Legt den Pfad zur Konfigurationsdatei fest.

PS: Ich würde einen Alias ​​erstellen alias ssh='ssh -i ... -F ...'und ihn in Ihr Profil einfügen.

PPS: Ich habe das noch nicht überprüft und weiß nicht, wie andere Programme (wie Git) mit diesen SSH-Einstellungen funktionieren.

verwandte Informationen