Gancio login ssh?


15

C'è un modo per eseguire uno script / comando ogni volta che un utente si connette usando ssh? Può essere configurato a livello globale (ad es. Eseguire lo script quando un utente effettua l'accesso)?

Mi sono imbattuto in questa domanda su Identica, ma non c'è ancora una risposta e vorrei conoscerla comunque.

Risposte:


11

Per tutti gli utenti o un determinato utente? Per un singolo utente, impostalo nel loro .bashrcfile; per tutti gli utenti, controlla pam_exec .

Se arrivano gli utenti sshd, ti consigliamo di aggiungere la seguente riga a /etc/pam.d/sshd; altri file a seconda della loro fonte:

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

A scopo di test, il modulo è incluso come optional , in modo che sia comunque possibile accedere in caso di errore. Dopo esserti accertato che funzioni, puoi passare optionala required. Quindi l'accesso non sarà possibile a meno che l'esecuzione dello script hook non abbia esito positivo.

Nota: come sempre quando si modifica la configurazione di accesso, lasciare aperta una shell di backup in background e testare l'accesso da un nuovo terminale.


Grazie, sembra promettente. Puoi approfondire un po 'di più? Non ho familiarità con questo.
phunehehe,

Suppongo che dovrei aggiungere session include pam_exec.so seteuid /path/to/scriptal file /etc/pam.d/system-remote-login. È corretto?
phunehehe,

O system-remote-logino sshd, a seconda di come sta arrivando l'utente.
Glen Solsberry,

Eccezionale! Sarebbe bello se modifichi la risposta per includere le informazioni (sai, per gli altri che le cercano).
phunehehe,

Nota per le persone che cercano su Google, puoi anche inserire questa riga auth optional pam_exec.so /path/to/my/hook.shin /etc/pam.d/common-authmodo che PAM ti informi di QUALSIASI evento di autenticazione che si verifica. Questo programma può anche inviare notifiche push: github.com/benjojo/PushAlotAuth
Nick Sweeting,

6

c'è un altro modo che influenza solo gli utenti che usano ssh e non quelli locali (che potrebbe essere migliore in situazioni di emergenza)

vedi gli snippet dalla pagina man di ssh qui sotto.

in questo caso gli utenti di solito possono modificare i file stessi (un po 'come .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.

e questo è globale e non modificabile dall'utente normale

 /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
Ma / etc / sshrc verrà eseguito solo se l'utente non ha il proprio ~ / .ssh / rc, quindi questo utente può bypassare
isevcik

2
@isevcik, questo è solo se PermitUserRC è impostato su "yes" in /etc/ssh/sshd_config(vedi man sshd_configper i dettagli)
jeremysprofile
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.