
Ich verwende täglich SSH, um mich bei einigen Servern anzumelden, die ich verwalte, und verwende einen SSH-Schlüssel zum Anmelden. Da ich meinen SSH-Schlüssel mit einem Passwort generiert habe, werde ich bei der ersten Verwendung von SSH an einem Tag zur Eingabe eines Passworts aufgefordert. Ich möchte, dass dies im Laufe des Tages regelmäßig erneut gesperrt wird, sodass jemand, der Zugriff auf meinen Laptop erhält, während er eingeschaltet ist, nicht unbedingt Zugriff auf die Server erhält. Ich kann keine Option dafür finden und mir fällt auch kein Befehl zum Sperren des Schlüssels ein. Wenn es einen solchen Befehl gibt, könnte ich ihn zu crontab hinzufügen.
Die beste Option ist wahrscheinlich, einfach keinen SSH-Schlüssel zu verwenden.
Antwort1
Sie haben wahrscheinlich ein Programm namens ssh-agent
ausgeführt. Wenn Sie ssh
zu einem anderen Host wechseln, ssh
kommuniziert der Befehl mit diesem, ssh-agent
um die Schlüssel und ihre Passphrasen beizubehalten.
Standardmäßig ssh-agent
werden die Passphrasen für immer gespeichert (bis zur Abmeldung), sodass Sie sie für jeden Schlüssel nur einmal eingeben müssen.
Der Befehlssh-add
wird verwendet, um die Liste der ssh-agent
bekannten Identitäten zu verwalten.
Um die Liste der bekannten Schlüssel anzuzeigen ssh-agent
, geben Sie
ssh-add -l
Um es zu schaffenvergessenIhre Schlüssel und Passphrasen, Ausgabe
ssh-add -D
Wenn Sie sich dann ssh
bei einem Host anmelden, werden Sie erneut zur Eingabe der Passphrase aufgefordert.
Es besteht auch die Möglichkeit, eineLebensdauerfür eine Passphrase:
ssh-add -t 3600 # 1 hour
aber das hat bei mir nicht funktioniert (oder ich habe etwas falsch gemacht). Ich würde einen Cronjob einrichten, der ssh-add -D
alle N Stunden ausgeführt wird. Das könnte etwas knifflig sein, da ssh-add
die Umgebungsvariable SSH_AUTH_SOCK
zur Kommunikation benötigt wird ssh-agent
und diese Variable vermutlich nicht unter Cron festgelegt ist.
Allerdings sollte man, wie in einem Kommentar angemerkt, den Laptop während der Abwesenheit nicht unbeaufsichtigt lassen, sondern lieber abschließen.
Antwort2
Sie könnten einfach eine Zeile in Ihre $HOME/.bash_logout
Datei schreiben, die Ihren SSH-Schlüssel aus Ihrem ~/.ssh/
Verzeichnis in ein anderes Verzeichnis verschiebt? Machen Sie dann das Gegenteil in $HOME/.bash_login
.
Informationen dazu, wie dies mit systemd funktioniert, finden Sie in diesem Beitrag.