Als ich das erste Mal lernte, wie man ssh-Schlüssel erstellt, wurde in den von mir gelesenen Tutorials festgelegt, dass eine gute Passphrase gewählt werden sollte. Als ich kürzlich einen Daemon-Prozess einrichtete, der ssh auf einen anderen Computer ausführen muss, stellte ich fest, dass der einzige Weg (anscheinend), einen Schlüssel zu haben, den ich nicht bei jedem Start authentifizieren muss, darin besteht, einen Schlüssel mit einem leeren zu erstellen Passphrase. Meine Frage ist also, was sind die Bedenken bei der Verwendung eines Schlüssels ohne Passphrase?
Eine weitere Lösung, die die Sicherheit erhöht und Sie gleichzeitig entlastet, sodass Sie Ihr Kennwort nicht ständig eingeben müssen:
Wenn Sie Ihren privaten Schlüssel verschlüsseln möchten, können Sie ihn
ssh-agent
auf Ihrer Workstation verwenden, um den unverschlüsselten Schlüssel zwischenzuspeichern. Wenn Sie Ihren entschlüsselten Schlüssel speichern möchten, führen Siessh-add ~/.ssh/id_rsa
oder was auch immer Ihr privater Schlüssel heißt. Sie werden aufgefordert, das Kennwort einzugeben, und der entschlüsselte Schlüssel steht für Ihre SSH-Verbindungen zur Verfügung, bis Sie sich abmelden, beendenssh-agent
oder herunterfahren.Sie können
kill
die gespeicherten Schlüssel mitssh-agent -k
und Sie könnenssh-agent -t [seconds]
zum Beispiel eine Lebensdauer für den Schlüssel zuweisen, der sich im Speicher befindet ; Wenn Sie Ihren Schlüssel nicht für immer entschlüsseln möchten, sondern viel um Ihre Hosts herum ssh-en möchten, können Sie das Timeout auf 5-10 Minuten einstellen. Sie müssen also das Kennwort Ihres Schlüssels nicht ständig eingeben.Auch dies hängt alles damit zusammen, wie sicher Sie in Bezug auf die Sicherheit Ihrer / workstation / sind. Wenn Sie der einzige sind, der Zugriff darauf hat, und Sie über ein ziemlich sicheres lokales Kennwort verfügen, ist dies nicht der Fall Laden Sie Exploits und Rootkits zu sich selbst ein. Ihr passphrasenloser privater Schlüssel ist einigermaßen sicher.
Wenn Sie wie ich sind und Ihren privaten Schlüssel auf einem USB-Stick aufbewahren, möchten Sie diesen auf jeden Fall verschlüsseln, auch wenn es sich nur um einen privaten Schlüssel handelt (ein separater Schlüssel, den ich auf meiner Workstation verwende) Wenn ich meinen Schlüssel verliere, kann ich einfach den öffentlichen Schlüssel des
~/.ssh/authorized_keys
USB-Sticks von der Liste meines Servers entfernen , wodurch auch ein / ausgezeichneter / Grund angezeigt wird, NÜTZLICHE Kommentare zu Ihren öffentlichen Schlüsseln hinzuzufügen.In Ihrer Antwort auf eine frühere Antwort sagten Sie, dass nur Personen, denen Sie vertrauen, mit den Schlüsseln Zugriff auf das Gerät haben. Ich möchte nur klarstellen, dass sich Ihr privater Schlüssel NICHT auf dem Server befinden muss, zu dem Sie eine Verbindung herstellen, falls Sie dies tun. Nur Ihr öffentlicher Schlüssel muss sich auf dem Server befinden, und das ist kein Problem, weshalb es sich um einen "öffentlichen" Schlüssel handelt.
oh, ich habe vergessen zu erwähnen; Ich
ssh-agent
starte , wenn ich X starte. Andernfalls werden die entschlüsselten Schlüssel, mitssh-add
denen ich speichere, nicht in verschiedenenxterm
Sitzungen beibehalten. Ich muss das Kennwort jedes Mal neu eingeben , wenn ich das Programm schließe, in demxterm
ich gestartet habessh-add
. In meiner~/.xinitrc
Datei habe ich:Ich muss den Aufruf
ssh-agent
einschließen,eval
da ssh-agent einige Umgebungsvariablen zurückgibt, die festgelegt werden müssen, wenn es ausgeführt wird, und von denen aus~/.xinitrc
die Umgebungsvariablen während der gesamten X-Sitzung konstant sind.quelle
ssh-agent
und verwendenssh -A -i privkey user@host
, wird es die Weiterleitung von ssh-Agenten ermöglichen, wodurch Sie vom ersten Server aus auf einen Server zugreifen können, ohne Ihren privaten Schlüssel auf dem ersten Server abzulegen. Die SSH-Verkettung wird auch ohne aktivierte SSH-Schlüsselweiterleitung nicht empfohlen undssh -A
hat ihre 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 Workstation ohne Passphrase ist.Sie können sich eine ähnliche Frage ansehen , die ich zu privaten SSL-Schlüsseln für Webserver gestellt habe. Grundsätzlich gibt es drei Möglichkeiten:
Jeder von ihnen ist fehlerhaft, also hängt alles davon ab, was Sie am meisten fürchten.
quelle
Für den automatisierten Zugriff, der, wie Sie sagen, Schlüssel ohne Passphrase erfordert, verwende ich immer die zusätzlichen Optionen von authorized_keys (siehe sshd (8)), um den Befehl einzuschränken, der ausgeführt werden kann.
Normalerweise stelle ich auf der Remote-Seite ein sorgfältig geschriebenes Skript bereit, das genau den Job (oder die Jobs - es können Parameter betrachtet werden) ausführt, den ich zulassen möchte.
Dann sperre ich es auch auf die IP-Adressen herunter, die mit diesem Schlüssel verbunden werden können (nicht 100% narrensicher, aber auch mit der Befehlsbeschränkung in Ordnung).
quelle
Solange niemand außer Ihnen Zugriff auf den Schlüssel hat, benötigen Sie keine Passphrase. Tatsächlich können Sie keine Passphrase für Schlüssel verwenden, die von automatisierter Software verwendet werden.
quelle
Wenn Sie ssh für jede Art von automatisiertem Vorgang verwenden möchten - ich denke speziell an Nagios-Prüfungen -, möchten Sie wahrscheinlich keine Passphrase verwenden.
In dieser Situation würden Sie dies wahrscheinlich nicht außerhalb eines LANs verwenden, und Sie hätten den Schlüssel sicher auf dem Server gespeichert, der die Prozedur ausführt.
In den meisten Tutorials zu SSH wird davon ausgegangen, dass sich eine Person von einem externen Netzwerk aus anmeldet, möglicherweise von einem unsicheren Computer aus. In diesem Fall ist der Hinweis korrekt.
Erstellen Sie grundsätzlich eine Passphrase, es sei denn, Sie wissen, dass es einen guten Grund gibt, dies nicht zu tun. Zu faul zu sein, um jedes Mal dein Passwort einzugeben, könnte für dich ein guter Grund sein :-)
quelle