Es gibt einige kurze Diskussionen über das vorhandene ssh-agent -t
Feature in [1], und es gab bereits 2001 einen Beitrag über Debian-Devel [2], in dem ein Inaktivitäts-Timeout-Feature gewünscht wurde. Es gibt hier eine ähnliche Diskussion über SE [3] für Festzüge.
Ich muss mich fragen, wie der Rest des Planeten SSH-Schlüssel schützt - fehlt mir etwas Offensichtliches, damit dies für mich und anscheinend für niemanden anderen ein Schmerzpunkt ist? Insbesondere denke ich an ssh-Interaktionen mit Skripten, beispielsweise mit ansible. Es scheint, dass Sie heute folgende Entscheidungen treffen können:
- Stellen Sie die Lebensdauer Ihres Schlüssels im Agenten auf einen besorgniserregend langen Zeitraum ein, z. 1 Stunde oder was auch immer die maximale Laufzeit Ihrer Skripte sein mag (ich bezweifle, dass viele Leute zulassen, dass sich das Zeitlimit für die Sudo-Neuauthentifizierung so lange verlängert!) - aber
seahorse
/ unterstützen Siegnome-keyring-daemon
kaum so viel [4] - Babysitten Sie Ihre lang laufenden Skripte und geben Sie Ihre Passphrase alle 5/10/15 Minuten erneut ein: Jetzt können Sie ganz einfach beobachten, wie Sie Ihre Passphrase 20 Mal am Tag eingeben
- Hacken Sie Ihre eigene Home-Brew-Lösung, um diese fehlende Funktion nachzuahmen, möglicherweise in Verbindung mit der Shell-
TMOUT
Var Ihrer Shell (danke an freenode #openssh IRC für diesen Vorschlag). - Sie haben überhaupt keine Schlüssellebensdauer festgelegt, dh Ihr Agent hält Ihren Schlüssel für immer geladen oder bis Sie ihn beenden / neu starten
Wenn Sie kurze Timeouts für SSH-Agenten, starke Passphrasen und unterschiedliche Schlüsseldateien für jede Art von Rolle verwenden, als die Sie sich authentifizieren: Dies führt zu einem sehr frustrierenden Tag!
Ich habe mit gpgkey2ssh und Smartcards experimentiert, aber dies löst dieses spezielle Problem nicht wirklich: Ich möchte immer noch die ssh-agent-Funktionalität und möchte nicht alle 5 Minuten neu authentifizieren müssen, um zu verhindern, dass meine privaten Schlüssel verfügbar gemacht werden im Speicher, während mein Computer inaktiv ist.
Mache ich es falsch
[1] Konfigurieren des Standardzeitlimits für den SSH-Agenten
[2] https://lists.debian.org/debian-devel/2001/09/msg00851.html
[3] /server/518312/putty-pageant-forget-keys-after-period-of-inactivity
[4] https://bugs.launchpad.net/ubuntu/+source/gnome-keyring/+bug/129231
quelle
ssh-agent
unabhängig von der Art der Sitzung ist, zu der sie gehört (z. B. tty-Sitzung, X11-Sitzung oder etwas anderes). Das einzige, was ich sagen möchte , wenn Ihre automatisierten Skripte wahrscheinlich nicht von dem in Ihrem Agenten geladenen Schlüssel abhängen sollten. Sie sollten wahrscheinlich jeweils einen eigenen privaten Schlüssel haben, der über erzwungene Befehle auf den entsprechenden Servern autorisiert ist, nur die spezifischen Remote-Befehle auszuführen, die jedes Skript ausführen muss. Das würde Sie natürlich die von cron etc laufen lassen ...ssh-agent
zu wissen, wann eine Sitzung inaktiv ist, aberssh-agent
starte das Timeout zumindest ab dem Zeitpunkt, zu dem der letzte Signaturvorgang stattgefunden hat, nicht nur, wann immer er gestartet wurde. Außerdem verwende ich bereits separate Benutzerkonten und Schlüsseldateien für jede Skriptrolle. Sudoers lässt zu, dass bei Bedarf nur 1 oder 2 Befehle sudo ausgeführt werden, und ich habe versucht, dielshell
Dinge weiter zu sperren. Aber all das befreit mich immer noch nicht davon, meine Schlüsseldateien schützen zu müssen: Nur weilsudo zfs send
der einzige Befehl für einen bestimmten Schlüssel zulässig ist, ist dies ein ziemlich mächtiger Befehl für jeden, der diesen Schlüssel verwendet!ControlMaster
/ControlPath
/ControlPersist
(sieheman ssh_config
) für Ihr Skript. Zumindest, wenn nur eine Verbindung zu einem Host hergestellt wird.ssh-agent
meine Schlüssel noch geladen habe, bis ich neu starte (was Wochen dauern kann).Antworten:
Wenn Sie diesbezüglich Bedenken haben, können Sie die
xscreensaver-command -watch
Benutzeroberfläche problemlos verwenden , um sie auszuführen,ssh-add -D
wenn der Bildschirm gesperrt ist. In der Manpage finden Sie ein sehr einfaches Beispiel.quelle