Crochet de connexion SSH?

15

Existe-t-il un moyen d'exécuter un script / commande chaque fois qu'un utilisateur se connecte à l'aide de ssh? Peut-il être configuré globalement (c'est-à-dire exécuter le script lors de la connexion d' un utilisateur)?

Je suis tombé sur cette question sur Identica, mais il n'y a pas encore de réponse et j'aimerais le savoir de toute façon.

phunehehe
la source

Réponses:

11

Pour tous les utilisateurs, ou un utilisateur particulier? Pour un seul utilisateur, définissez-le dans leur .bashrcfichier; pour tous les utilisateurs, consultez pam_exec .

Si les utilisateurs viennent de sshd, vous voudrez ajouter la ligne suivante à /etc/pam.d/sshd; d'autres fichiers en fonction de leur source:

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

À des fins de test, le module est inclus en tant que optional, afin que vous puissiez toujours vous connecter en cas d'échec. Après vous être assuré que cela fonctionne, vous pouvez passer optionalà required. La connexion ne sera alors possible que si l'exécution de votre script de hook est réussie.

Remarque: Comme toujours lorsque vous modifiez la configuration de connexion, laissez un shell de sauvegarde ouvert en arrière-plan et testez la connexion à partir d'un nouveau terminal.

Glen Solsberry
la source
Merci, cela semble prometteur. Pouvez-vous élaborer un peu plus? Je ne connais pas ça.
phunehehe
Je suppose que je devrais ajouter session include pam_exec.so seteuid /path/to/scriptau fichier /etc/pam.d/system-remote-login. Est-ce exact?
phunehehe
Soit system-remote-loginou sshd, selon la façon dont l'utilisateur entre.
Glen Solsberry
Impressionnant! Ce serait formidable si vous modifiez la réponse pour inclure les informations (vous savez, pour ceux qui les recherchent).
phunehehe
Note aux personnes googler, vous pouvez aussi mettre cette ligne auth optional pam_exec.so /path/to/my/hook.shen /etc/pam.d/common-authavoir PAM vous informer de tous les événements d'authentification qui se produisent. Ce programme peut également vous envoyer des notifications push: github.com/benjojo/PushAlotAuth
Nick Sweeting
6

il y a une autre façon qui n'influence que les utilisateurs utilisant ssh et non les locaux (ce qui pourrait être mieux dans les situations d'urgence)

voir les extraits de la page de manuel ssh ci-dessous.

dans ce cas, les utilisateurs peuvent généralement modifier eux-mêmes les fichiers (un peu comme .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.

et ceci est global et non modifiable par l'utilisateur normal

 /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.
Marcel G
la source
2
Mais / etc / sshrc ne sera exécuté que si l'utilisateur n'a pas son propre ~ / .ssh / rc, donc cet utilisateur peut contourner
isevcik
2
@isevcik, c'est seulement si PermitUserRC est défini sur "yes" dans /etc/ssh/sshd_config(voir man sshd_configpour plus de détails)
jeremysprofile