Gancho de login ssh?


15

Existe uma maneira de executar um script / comando toda vez que um usuário se conectar usando ssh? Ele pode ser configurado globalmente (ou seja, executar o script quando qualquer usuário fizer login)?

Encontrei essa pergunta no Identica, mas ainda não há resposta e gostaria de saber de qualquer maneira.

Respostas:


11

Para todos os usuários ou um usuário em particular? Para um único usuário, defina-o em seu .bashrcarquivo; para todos os usuários, consulte pam_exec .

Se os usuários vierem sshd, adicione a seguinte linha a /etc/pam.d/sshd; outros arquivos, dependendo da fonte:

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

Para fins de teste, o módulo é incluído como optional, para que você ainda possa efetuar login se falhar. Depois de ter certeza de que funciona, você pode mudar optionalpara required. Então, o login não será possível, a menos que a execução do seu script de gancho seja bem-sucedida.

Nota: Como sempre, quando você altera a configuração de logon, deixe um shell de backup aberto em segundo plano e teste o logon em um novo terminal.


Obrigado, isso parece promissor. Você pode elaborar um pouco mais? Não estou familiarizado com isso.
phunehehe

Suponho que devo adicionar session include pam_exec.so seteuid /path/to/scriptao arquivo /etc/pam.d/system-remote-login. Isso está correto?
phunehehe

De qualquer system-remote-loginou sshd, dependendo de como o usuário está entrando.
Glen Solsberry

Impressionante! Seria ótimo se você editar a resposta para incluir as informações (você sabe, para outras pessoas que as pesquisam).
phunehehe

Nota para as pessoas googling, você também pode colocar esta linha auth optional pam_exec.so /path/to/my/hook.shem /etc/pam.d/common-authter PAM notificá-lo de quaisquer eventos de autenticação que ocorrem. Este programa também pode enviar notificações por push: github.com/benjojo/PushAlotAuth
Nick Sweeting

6

existe outra maneira que influencia apenas os usuários que usam ssh e não locais (o que pode ser melhor em situações de emergência)

veja os trechos da página de manual do ssh abaixo.

nesse caso, os usuários geralmente podem modificar os arquivos eles mesmos (um pouco 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.

e isso é global e não modificável pelo usuário 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.

2
Mas / etc / SSHRC será executada somente se o usuário não tiver próprio ~ / .ssh / rc, de modo que este usuário pode ignorar
isevcik

2
@isevcik, que é somente se PermitUserRC é definido como "sim" /etc/ssh/sshd_config(ver man sshd_configpara mais detalhes)
jeremysprofile
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.