Frage Ist es in Ordnung, einen SSH-Schlüssel mit einer leeren Passphrase zu verwenden?


Als ich zum ersten Mal lernte, wie man SSH-Schlüssel erstellt, haben die Tutorials, die ich gelesen habe, festgestellt, dass eine gute Passphrase gewählt werden sollte. Aber in letzter Zeit, als ich einen Daemon-Prozess einrichtete, der auf einem anderen Rechner ssh laufen muss, entdeckte ich, dass der einzige Weg (wie es scheint) einen Schlüssel zu haben, den ich nicht bei jedem Booten authentifizieren muss, ist einen Schlüssel mit einem leeren zu erstellen Passphrase. Also meine Frage ist, was sind die Bedenken bei der Verwendung eines Schlüssels ohne Passphrase?


29
2018-05-18 13:01


Ursprung




Antworten:


Ein Schlüssel ohne Passphrase hängt davon ab, dass niemand anders in der Lage ist, an diesen Schlüssel heranzukommen (wer wäre nicht in der Lage, an den Ressourcen zu kommen, zu denen er ohnehin Zugang hat). Wenn also der Schlüssel Zugriff auf eine Maschine neben ihr gewährt und beide Maschinen die gleiche elektronische und physische Sicherheit haben, ist das keine große Sache.

Wenn sich Ihr Schlüssel andererseits auf einem Computer mit schlechter Sicherheit befindet (vielleicht hat er viele nicht vertrauenswürdige Benutzer, ist leicht physisch erreichbar oder wird mit seinem Patch-System nicht auf dem neuesten Stand gehalten), dann werden Sie wahrscheinlich nicht Ich möchte keine Passphrase-losen Schlüssel dort aufbewahren.

Letztendlich liegt es am Vertrauen in Ihr Setup und an der Abwägung der Risiken / Kosten dafür - wenn Sie sicher sein können, dass es für einen Angreifer nicht realistischer ist, Zugriff auf den Schlüssel zu erhalten, als auf die Ressource, auf die Sie Zugriff haben dann geht es dir gut. Wenn Sie dieses Vertrauen nicht haben, sollten Sie wahrscheinlich die Gründe warum beheben :)


30
2018-05-18 13:07



Nur vertrauenswürdige Personen haben Zugriff auf die Maschine mit den Schlüsseln, also denke ich, dass das meine Frage beantwortet. Vielen Dank. - mozillalives


eine weitere Lösung, die die Sicherheit erhöht und Ihnen die Arbeit erleichtert, damit Sie nicht ständig Ihr Passwort eingeben müssen:

Wenn Sie Ihren privaten Schlüssel verschlüsseln möchten, können Sie verwenden ssh-agent auf Ihrer Arbeitsstation, um den unverschlüsselten Schlüssel zu "cachen". Wenn Sie Ihren entschlüsselten Schlüssel speichern möchten, führen Sie ihn aus ssh-add ~/.ssh/id_rsa oder wie auch immer Ihr privater Schlüssel benannt ist. Sie werden nach dem Passwort gefragt, und der entschlüsselte Schlüssel wird für Ihre SSH-Verbindungen verfügbar sein, bis Sie sich abmelden, kill ssh-agent oder Herunterfahren.

Sie können kill die gespeicherten Schlüssel mit ssh-agent -k und Sie können dem Schlüssel eine Lebenszeit zuweisen ssh-agent -t [seconds] so zum Beispiel; Wenn Sie Ihren Schlüssel nicht für immer entschlüsseln lassen möchten, aber eine Vielzahl von SSH-Befehlen um Ihre Hosts ausführen möchten, können Sie das Timeout auf 5-10 Minuten einstellen. Sie müssen also nicht ständig das Passwort Ihres Schlüssels eingeben.

Das alles hat wieder damit zu tun, wie sehr Sie sich auf die Sicherheit Ihrer / Workstation / verlassen, die, wenn Sie die einzige Person sind, die Zugriff darauf hat, und Sie ein ziemlich sicheres lokales Passwort haben, und Sie nicht Wenn Sie Exploits und Rootkits auf sich selbst laden, ist Ihr passwortgeschützter privater Schlüssel einigermaßen sicher.

Wenn Sie wie ich sind, und Sie Ihren privaten Schlüssel auf einem USB-Stick behalten, werden Sie definitiv das verschlüsseln wollen, obwohl es nur ein privater Schlüssel ist (ein separater, den ich auf meiner Workstation verwende, also wenn Ich verliere meinen Schlüssel, ich kann einfach den öffentlichen Schlüssel des USB-Sticks von meinem Server entfernen ~/.ssh/authorized_keysListe, die auch einen / ausgezeichneten / Grund bringt, Ihren öffentlichen Schlüsseln NÜTZLICHE Kommentare hinzuzufügen)

In Ihrer Antwort auf eine vorherige Antwort sagten Sie, nur Personen, denen Sie vertrauen, haben mit den Schlüsseln Zugriff auf die Maschine. Ich möchte nur klarstellen, dass Ihr privater Schlüssel nicht auf dem Server sein muss, mit dem Sie sich verbinden, falls Sie das tun. nur Ihr öffentlicher Schlüssel muss auf dem Server sein, und das ist kein Problem, weshalb es ein "öffentlicher" Schlüssel ist.

Oh, ich habe vergessen zu erwähnen; Ich starte ssh-agent wenn ich X starte, ansonsten die entschlüsselten Schlüssel mit denen ich speichere ssh-add werden nicht durch verschiedene beibehalten xterm Sitzungen, und ich muss das Passwort jedes Mal neu eingeben, wenn ich die xterm Ich startete ssh-add in meinem ~/.xinitrc Datei, ich habe:

if [ -x /usr/bin/ssh-agent ]; then
   eval $(/usr/bin/ssh-agent)
fi

Ich habe den Anruf zu ssh-agent eingepackt in eval Weil ssh-agent einige Umgebungsvariablen zurückgibt, die bei der Ausführung festgelegt werden müssen und von denen ausgeführt werden soll ~/.xinitrc, die Umgebungsvariablen sind während der gesamten X-Sitzung konstant.


7
2018-05-18 14:36



Ja, ich weiß, dass ich nur den öffentlichen Schlüssel hochladen muss. Es ist nur so, dass ich einen Server mit einem anderen verbinde, weshalb ich das erwähnte. Aber danke, dass Sie diese klare und durchdachte Antwort geschrieben haben. - mozillalives
nun, wenn du es benutzt ssh-agent und benutzen ssh -A -i privkey user@host Es ermöglicht die ssh-Agentenweiterleitung, mit der Sie vom ersten Server auf einen Server zugreifen können, ohne Ihren privaten Schlüssel auf dem ersten Server zu platzieren. SSH-Verkettung wird nicht empfohlen, auch ohne ssh-Schlüsselweiterleitung aktiviert und ssh -A hat seine eigenen Sicherheitsbedenken. Es gibt keinen Grund, warum der Schlüssel auf dem Server nicht verschlüsselt werden kann, während der Schlüssel auf Ihrer Arbeitsstation passphrasenlos ist. - cpbills


Sie können einen Blick auf ein ähnliche Frage Ich fragte nach privaten SSL-Schlüsseln für Webserver. Grundsätzlich gibt es drei Möglichkeiten:

  1. Schützen Sie den Schlüssel mit Dateisystem Perms.
  2. Verwenden Sie einen passwortgeschützten Schlüssel und geben Sie den Schlüssel bei jedem Neustart manuell ein.
  3. Verwenden Sie einen passwortgeschützten Schlüssel und speichern Sie den Schlüssel im Dateisystem, um den Neustart zu automatisieren.

Jeder von ihnen ist fehlerhaft, also hängt alles davon ab, wovor du am meisten Angst hast.


3
2018-05-18 13:07





Für den automatisierten Zugriff, der wie gesagt ohne Schlüssel ohne Passwort auskommt, verwende ich immer die zusätzlichen Optionen von authorized_keys (siehe sshd (8)), um den ausführbaren Befehl zu begrenzen.

Normalerweise stelle ich am entfernten Ende ein sorgfältig geschriebenes Skript zur Verfügung, das genau die Aufgabe (oder Jobs - es kann Parameter anzeigen) ausführt, die ich zulassen möchte.

Dann sperre ich es auch auf die IP-Adressen, die mit diesem Schlüssel verbunden werden können (nicht 100% idiotensicher, aber gut mit der Befehlsbeschränkung).


1
2018-05-18 14:21



Ausgezeichneter Punkt - wenn Sie es für notwendig halten, ungeschützte Schlüssel zu verwenden, ist das Beste, was Sie tun können, es zu sperren! - MikeyB


Solange niemand außer Ihnen Zugriff auf den Schlüssel hat, benötigen Sie keine Passphrase. In der Tat können Sie keine Passphrase für Schlüssel verwenden, die von automatisierter Software verwendet werden.


1
2018-05-23 12:05





Wenn Sie ssh für jede Art automatisierter Prozedur verwenden wollen - ich denke speziell an Nagios-Prüfungen -, dann würden Sie wahrscheinlich keine Passphrase verwenden wollen.

In dieser Situation würden Sie dies wahrscheinlich nicht außerhalb eines LANs verwenden, und Sie würden den Schlüssel auf dem Server, der die Prozedur ausführt, sicher speichern.

Die meisten Tutorials, in denen SSH diskutiert wird, erwarten eine Person, die sich von einem externen Netzwerk anmeldet, möglicherweise von einem unsicheren Computer. In diesem Fall ist der Ratschlag gut.

Grundsätzlich, wenn Sie nicht wissen, gibt es einen guten Grund, nicht, erstellen Sie eine Passphrase. Wenn du zu faul bist, jedes Mal ein Passwort einzugeben, ist das ein guter Grund für dich :-)


0
2018-05-18 13:20



Selbst wenn sie sich von einem externen Netzwerk aus anmelden, wie macht das einen Unterschied? Nur die Sicherheit des Client-Computers ist wichtig, die Passphrase wird auf der Client-Seite behandelt, richtig? - njsg
Bis dein Client-Laptop gestohlen wird und dazu benutzt wird, deinen Umkreis zu durchbrechen, bevor jemand die Chance hat, den SSH-Schlüssel zu entziehen. Eine Passphrase auf dem Schlüssel würde Ihnen mehr Zeit geben, die Schlüssel zu widerrufen. - dunxd
Also, wie ich schon sagte: "Nur die Sicherheit des Client-Computers ist wichtig". - njsg