Wie kann ich meine ssh-Schlüssel auf Power-Management-Aktivitäten spülen?

Verwenden Sie ssh-agent und private Schlüssel pro üblich. Alles funktioniert wie normal.

Meine Frage bezieht sich auf Best Practices auf Spülung Schlüssel von ssh-add auf Aktivität wie Schlaf, suspend, hibernate, etc. Ich dachte über das Schreiben einer einfachen Wrapper um diese Befehle, aber dann gefragt, ob sie sogar genannt werden? Oder leitet der coreel diese Aktivität direkt ein? Sind die PM-Dienstprogramme streng Userland?

Ich würde gerne diese zusätzliche Schicht der security jenseits der Verriegelung meines imageschirms, etc. und fragte mich, ob jemand anderes hatte diese elegant getriggers oder hat Best Practices zu empfehlen. Vielen Dank.

  • Bestimmen Sie, wann jemand zuletzt von einem Schlüssel an einem Server angemeldet ist
  • OpenSSH auf Ubuntu 10.10 (Maverick): Sollte ~ / .ssh / authorized_keys file automatisch generiert werden?
  • SSH: ein autorisiertes Mitglied für mehrere Dienstkonten
  • "Fügen Sie korrekten Host-Schlüssel in bekannt_hosts" / mehrere ssh Host-Schlüssel pro Hostname?
  • SSH Kennwort für einen Benutzer zulassen, Rest nur öffentliche Schlüssel zulassen
  • SSH-Schlüsselauthentifizierung auf serverseite
  • Passwort für alle Benutzer außer root zulassen?
  • Ssh_exchange_identification: Verbindung durch Remotehost geschlossen
  • 5 Solutions collect form web for “Wie kann ich meine ssh-Schlüssel auf Power-Management-Aktivitäten spülen?”

    Vielleicht können Sie einen User-Daemon für die Statusänderung über D-Bus hören. Es sieht aus wie gnome-power-manager stellt keine Signale für diese, aber Sie können in der Lage, etwas aus hal oder DeviceKit-power / upower zu bekommen.

    Ich habe ein bisschen pm Skript, die die benutzerdefinierten Skripts für jeden angemeldeten Benutzer auf suspend / hibernate, resume / thaw laufen lassen. Ich habe das benutzt, um processe zu töten oder neu zu starten, die sich nicht gut verhalten. Benutzer können Skripte in ~/.user-pm erstellen, die in lexikographischer Reihenfolge auf Suspend und umgekehrte Reihenfolge im Lebenslauf ausgeführt werden. $1 hat den pm-Namen.

    Sie können einfach ein User-Script hinzufügen, das " ssh-add -D " auf suspend / hibernate aufruft. (du SSH_AUTH_SOCK irgendwo den SSH_AUTH_SOCK , aber ich nehme an, du brauchst das für jede Lösung).

    Hier ist die globale pm Haken:

     > cat /etc/pm/sleep.d/10_run_user_parts #!/bin/sh USER_PM_DIR=".user-pm" # foreach logged in user for user in `users | grep -o "\S*" | sort -u`; do user_home=`getent passwd "${user}" | awk -F: '{print $6}'` # check user has a valid home-directory [ -d $user_home ] || continue user_pm_dir="$user_home/$USER_PM_DIR" # check for user-pm directory [ -d "$user_pm_dir" ] || continue # call run-parts as $user case "$1" in hibernate|suspend) su -c "run-parts --arg=\"$1\" \"${user_pm_dir}\"" "${user}" ;; thaw|resume) su -c "run-parts --reverse --arg=\"$1\" \"${user_pm_dir}\"" "${user}" ;; *) exit $NA ;; esac done 

    Ich bin auf Ubuntu – das sollte auch für Debian funktionieren – sonst, YMMV

    Wenn Sie Ihren Schlüssel mit der Option "-c" zu "ssh-add" hinzufügen, müssen Sie jeden Gebrauch bestätigen. Dies ist nicht so gut wie das Entfernen des Schlüssels von Ihrem Agenten auf suspend, wenn Sie auch sperren Sie Ihren imageschirm kann es eine ähnliche Wirkung haben, da die Schlüsselbenutzung nicht bestätigt werden kann, bis Sie sich anmelden.

    In der Vergangenheit habe ich diese Schlüsselentfernung erreicht, indem ich ein einfaches Skript ausführte, das alle paar Sekunden aufwachte und nach dem Programm suchte, das den imageschirm sperrt, und wenn es gefunden wurde, würde es das "ssh-add -D" machen. Dann, sobald es wegging, würde es das "ssh-add -c" wieder aufrufen, um mich um das Passwort zu bitten. Ich beendete die Umstellung auf nur auf Bestätigung und imageschirm Sperren verlassen, wenn ich aussetzen oder verlassen die Tastatur.

    Dies ist eine weitere indirekte Lösung, die nicht die Einbringung registrierter Identitäten / Schlüssel aus dem Agenten beinhaltet, sondern die ssh-Agent auch so nützlich wäre ( ssh-add -x )? Ich bin mir nicht sicher, wie sicher diese Methode wäre (sicherlich nicht wo nahe so sicher wie das Entfernen von Schlüsseln aus dem Agenten), aber ich nehme an, dass diese function implementiert wurde, um die Art der zusätzlichen security, die Sie in dieser Situation suchen, anzubieten.

    Danke @Greg für deine Antwort, ich habe mir die Freiheit genommen, es zu erweitern, um es mehr "freedesktop" kompatibel zu machen, da pm-utils ein freedesktop.org Projekt ist.

    Dieses Skript wird nun in config.d , power.d und sleep.d mit einer Kopie oder einem Symlink arbeiten. Es wird dann nach Scripts suchen, um in ~/.config/pm/ mit den gleichen config.d ( config.d , power.d und sleep.d ) als /etc/pm sleep.d .

     #!/bin/sh scriptdir=`cd $(dirname $0) && pwd` USER_PM_DIR=".config/pm/$(basename $scriptdir)" # foreach logged in user for user in `users | grep -o "\S*" | sort -u`; do user_home=`getent passwd "${user}" | awk -F: '{print $6}'` # check user has a valid home-directory [ -d $user_home ] || continue user_pm_dir="$user_home/$USER_PM_DIR" # check for user-pm directory [ -d "$user_pm_dir" ] || continue # call run-parts as $user case "$1" in hibernate|suspend) su -c "run-parts --arg=\"$1\" \"${user_pm_dir}\"" "${user}" ;; thaw|resume) su -c "run-parts --reverse --arg=\"$1\" \"${user_pm_dir}\"" "${user}" ;; *) exit $NA ;; esac done 

    Dann ist dies mein Skript, um alle Schlüssel aus dem ssh-agent auf suspend / hibernate zu entfernen und einen Schlüssel für SparkleShare erneut hinzuzufügen. Nur um sicher zu sein, es prüft auch auf andere ssh-agent s und entfernt alle Schlüssel von ihnen.

     #!/bin/sh case "$1" in hibernate|suspend) if [ ! -z $SSH_AUTH_SOCK ] && [ -r $SSH_AUTH_SOCK ]; then ssh-add -D fi for SSH_AUTH_SOCK in `find /tmp/ssh-*/agent.* -user $USER`; do SSH_AUTH_SOCK=$SSH_AUTH_SOCK /usr/bin/ssh-add -D done ;; thaw|resume) if [ ! -z $SSH_AUTH_SOCK ] && [ -r $SSH_AUTH_SOCK ]; then /usr/bin/ssh-add -t 0 ~/.config/sparkleshare/2011-03-21_14h15.key fi for SSH_AUTH_SOCK in `find /tmp/ssh-*/agent.* -user $USER`; do SSH_AUTH_SOCK=$SSH_AUTH_SOCK ssh-add -t 0 ~/.config/sparkleshare/2011-03-21_14h15.key done ;; esac 
    Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de réseau.