Execute o comando no servidor SSH sempre que um usuário se conectar, mesmo que seja apenas para tunelamento

Execute o comando no servidor SSH sempre que um usuário se conectar, mesmo que seja apenas para tunelamento

Eu gostaria, como administrador de um jumphost ssh do OpenBSD usado por várias pessoas, executar um comando específico sempre que qualquer usuário se conectar via SSH, mesmo que apenas para tunelamento.

Isso é possível?

Eu tentei usar ForceCommande /etc/sshrc, mas eles parecem se aplicar apenas quando o usuário tem uma sessão interativa e não de outra forma.

Como estou executando o OpenBSD, infelizmente nada baseado em PAM funcionará, ou sejaEsta resposta no Unix e Linux

O script apenas é executado sendmailusando whoamie $SSH_CONNECTIONpara me informar quem efetuou login e de onde.

#!/bin/sh

[email protected]

sendmail -F alerts -f $EMAIL root << EOF
Subject: New Login For $1
Message-ID: <$(date +%s)@$(hostname)>
X-Mailer: OpenSMTPD
Content-Type: text/plain

There has been a new login for $1 on $SSH_CONNECTION
EOF

Responder1

Você pode monitorar /var/log/authloge usar awkpara enviar uma mensagem sempre que uma linha específica corresponder:

tail -f /var/log/authlog | awk '/Accepted pubkey/ { system("mail -s " $0 " [email protected] << EOF\nEOF") }'

É claro que você pode substituir /Accepted pubkey/por algum outro padrão que se adapte ao seu caso. Optei por enviar e-mails vazios com a linha de log como assunto, para facilitar a leitura no MUA, mas você pode preferir algo como

system("mail -s New\\ Login [email protected] << EOF\n" $0 "\nEOF")

informação relacionada