
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 ForceCommand
e /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 sendmail
usando whoami
e $SSH_CONNECTION
para 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/authlog
e usar awk
para 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")