Aviso: Como sempre, ao alterar a configuração de login, deixe uma sessão ssh de backup aberta em segundo plano e teste o login a partir de um novo terminal.
Como o método sshrc
não funciona se o usuário tiver seu próprio arquivo ~/.ssh/rc
, explicarei como fazer isso com pam_exec
conforme sugerido pelo @adosaiguas. O bom é que isso também pode ser facilmente adaptado para tipos de login diferentes de ssh
(como logins locais ou até mesmo todos os logins) conectando em um arquivo diferente em /etc/pam.d/
.
Primeiro você precisa ser capaz de enviar e-mail a partir da linha de comando. Existem outras questões sobre isso. Em um servidor de email, é provavelmente mais fácil instalar o mailx
(que provavelmente já está instalado).
Então você precisa de um arquivo de script executável login-notify.sh
(eu coloquei em /etc/ssh/
, por exemplo) com o seguinte conteúdo. Você pode alterar as variáveis para alterar o assunto e o conteúdo da notificação por e-mail. Não se esqueça de executar chmod +x login-notify.sh
para torná-lo executável.
#!/bin/sh
# Change these two lines:
sender="[email protected]"
recepient="[email protected]"
if [ "$PAM_TYPE" != "close_session" ]; then
host="'hostname'"
subject="SSH Login: $PAM_USER from $PAM_RHOST on $host"
# Message to send, e.g. the current environment variables.
message="'env'"
echo "$message" | mailx -r "$sender" -s "$subject" "$recepient"
fi
Depois de ter isso, você pode adicionar a seguinte linha a /etc/pam.d/sshd
:
session optional pam_exec.so seteuid /path/to/login-notify.sh
Para fins de teste, o módulo é incluído como optional
, para que você ainda possa efetuar login se a execução falhar. Depois de ter certeza de que funciona, você pode alterar optional
para required
. Então, o login não será possível a menos que a execução do seu script de gancho seja bem-sucedida (se é isso que você quer).
Para aqueles que precisam de uma explicação sobre o que é o PAM e como ele funciona, aqui é muito bom um .