
Me gustaría, como administrador de un jumphost ssh de OpenBSD utilizado por varias personas, ejecutar un comando específico cada vez que un usuario se conecta a través de SSH, incluso si solo es para hacer un túnel.
es posible?
Intenté usar ForceCommand
y /etc/sshrc
, pero parece que solo se aplican cuando el usuario tiene una sesión interactiva y no de otra manera.
Debido a que estoy ejecutando OpenBSD, desafortunadamente nada basado en PAM funcionará, es decirEsta respuesta en Unix y Linux
El script simplemente se ejecuta sendmail
usando whoami
y $SSH_CONNECTION
para informarme quién inició sesión y desde dónde.
#!/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
Respuesta1
Puede monitorear /var/log/authlog
y usar awk
para enviarle un mensaje cada vez que coincida una línea específica:
tail -f /var/log/authlog | awk '/Accepted pubkey/ { system("mail -s " $0 " [email protected] << EOF\nEOF") }'
Por supuesto, puedes sustituirlo /Accepted pubkey/
por algún otro patrón que se ajuste a tu caso. Elegí enviar correos electrónicos vacíos con la línea de registro como asunto, para facilitar la lectura en el MUA, pero es posible que prefieras algo como
system("mail -s New\\ Login [email protected] << EOF\n" $0 "\nEOF")