SSH-Login-Haken?


15

Gibt es eine Möglichkeit, ein Skript / einen Befehl jedes Mal auszuführen, wenn ein Benutzer eine Verbindung mit ssh herstellt? Kann es global konfiguriert werden (dh das Skript ausführen, wenn sich ein Benutzer anmeldet)?

Ich bin auf Identica auf diese Frage gestoßen, aber es gibt noch keine Antwort und ich würde es trotzdem gerne wissen.

Antworten:


11

Für alle Benutzer oder für einen bestimmten Benutzer? Legen Sie sie für einen einzelnen Benutzer in seiner .bashrcDatei fest. Checken Sie für alle Benutzer pam_exec aus .

Wenn die Benutzer von kommen sshd, möchten Sie die folgende Zeile hinzufügen /etc/pam.d/sshd; andere Dateien abhängig von ihrer Quelle:

session optional pam_exec.so seteuid  /path/to/my/hook.sh

Zu Testzwecken ist das Modul als enthalten optional, sodass Sie sich auch dann anmelden können, wenn es fehlschlägt. Nachdem Sie sorgte dafür , dass es funktioniert, können Sie ändern , optionalzu required. Dann ist die Anmeldung erst möglich, wenn die Ausführung Ihres Hook-Skripts erfolgreich war.

Hinweis: Lassen Sie wie immer beim Ändern der Anmeldekonfiguration eine Backup-Shell im Hintergrund geöffnet und testen Sie die Anmeldung von einem neuen Terminal aus.


Danke, das sieht vielversprechend aus. Können Sie noch etwas näher darauf eingehen? Ich bin damit nicht vertraut.
Phunehehe

Ich nehme an, dass ich session include pam_exec.so seteuid /path/to/scriptdie Datei hinzufügen sollte /etc/pam.d/system-remote-login. Ist das korrekt?
Phunehehe

Entweder system-remote-loginoder sshd, je nachdem, wie der Benutzer hereinkommt.
Glen Solsberry

Genial! Es wäre großartig, wenn Sie die Antwort so bearbeiten, dass sie die Informationen enthält (Sie wissen, für andere, die danach suchen).
Phunehehe

Hinweis an die Menschen googeln, können Sie auch diese Zeile setzen auth optional pam_exec.so /path/to/my/hook.shin /etc/pam.d/common-authhaben PAM Sie über alle Authentifizierungs - Ereignisse zu informieren , die auftreten. Dieses Programm kann Ihnen auch Push-Benachrichtigungen senden: github.com/benjojo/PushAlotAuth
Nick Sweeting

6

Es gibt einen anderen Weg, der nur die Benutzer beeinflusst, die ssh verwenden, nicht die lokalen (was in Notfallsituationen besser sein könnte)

Siehe die Auszüge aus der SSH-Manpage unten.

In diesem Fall können die Benutzer die Dateien normalerweise selbst ändern (ein bisschen wie .bashrc).

 ~/.ssh/rc
         Commands in this file are executed by ssh when the user logs in, just before the user's shell (or command) is started.  See the sshd(8) manual page for more information.

Dies ist global und kann vom normalen Benutzer nicht geändert werden

 /etc/sshrc
         Commands in this file are executed by ssh when the user logs in, just before the user's shell (or command) is started.  See the sshd(8) manual page for more information.

2
Aber / etc / sshrc wird nur ausgeführt, wenn der Benutzer kein eigenes ~ / .ssh / rc hat, damit dieser Benutzer umgehen kann
isevcik

2
@isevcik, das ist nur, wenn PermitUserRC auf "yes" gesetzt ist /etc/ssh/sshd_config(siehe man sshd_configfür Details)
jeremysprofile
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.