¿Gancho de inicio de sesión ssh?

15

¿Hay alguna manera de ejecutar un script / comando cada vez que un usuario se conecta usando ssh? ¿Se puede configurar globalmente (es decir, ejecutar el script cuando cualquier usuario inicia sesión)?

Encontré esta pregunta en Identica, pero todavía no hay una respuesta y me gustaría saberla de todos modos.

phunehehe
fuente

Respuestas:

11

¿Para todos los usuarios o un usuario en particular? Para un solo usuario, configúrelo en su .bashrcarchivo; para todos los usuarios, consulte pam_exec .

Si los usuarios vienen sshd, querrás agregar la siguiente línea a /etc/pam.d/sshd; otros archivos dependiendo de su fuente:

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

Para fines de prueba, el módulo se incluye como optional, de modo que aún puede iniciar sesión si falla. Después de asegurarte de que funciona, puedes cambiar optionala required. Entonces el inicio de sesión no será posible a menos que la ejecución de su script de enlace sea exitosa.

Nota: Como siempre cuando cambia la configuración de inicio de sesión, deje un shell de copia de seguridad abierto en segundo plano y pruebe el inicio de sesión desde un nuevo terminal.

Glen Solsberry
fuente
Gracias, eso parece prometedor. ¿Puedes elaborar un poco más? No estoy familiarizado con esto.
phunehehe
Supongo que debería agregar session include pam_exec.so seteuid /path/to/scriptal archivo /etc/pam.d/system-remote-login. ¿Es eso correcto?
phunehehe
Ya sea system-remote-logino sshd, dependiendo de cómo esté entrando el usuario.
Glen Solsberry
¡Increíble! Sería genial si edita la respuesta para incluir la información (ya sabe, para otros que la buscan).
phunehehe
Nota para las personas googlear, también se puede poner esta línea auth optional pam_exec.so /path/to/my/hook.shen /etc/pam.d/common-authtener PAM le notifique de cualquier evento de autenticación que se producen. Este programa también puede enviarle notificaciones push: github.com/benjojo/PushAlotAuth
Nick Sweeting
6

Hay otra forma que solo influye en los usuarios que usan ssh no locales (que podría ser mejor en situaciones de emergencia)

vea los fragmentos de la página de manual de ssh a continuación.

en este caso, los usuarios generalmente pueden modificar los archivos ellos mismos (un poco como .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.

y esto es global y no modificable por el usuario 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
fuente
2
Pero / etc / sshrc se ejecutará solo si el usuario no tiene su propio ~ / .ssh / rc, por lo que este usuario puede
omitirlo
2
@isevcik, eso es solo si PermitUserRC está configurado como "sí" en /etc/ssh/sshd_config(ver man sshd_configpara más detalles)
jeremysprofile