Ejecute el comando en el servidor SSH cada vez que un usuario se conecte, incluso si solo es para hacer un túnel

Ejecute el comando en el servidor SSH cada vez que un usuario se conecte, incluso si solo es para hacer un túnel

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 ForceCommandy /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 sendmailusando whoamiy $SSH_CONNECTIONpara 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/authlogy usar awkpara 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")

información relacionada