
Als Administrator eines von mehreren Personen verwendeten OpenBSD-SSH-Jumphosts möchte ich jedes Mal, wenn ein Benutzer eine Verbindung über SSH herstellt, einen bestimmten Befehl ausführen, und sei es nur zum Tunneln.
Ist das möglich?
Ich habe versucht, ForceCommand
und zu verwenden /etc/sshrc
, aber diese scheinen nur anzuwenden zu sein, wenn der Benutzer eine interaktive Sitzung hat, und andernfalls nicht.
Da ich OpenBSD verwende, funktioniert leider nichts PAM-basiertes, d. h.Diese Antwort zu Unix und Linux
Das Skript wird einfach sendmail
unter Verwendung von whoami
und ausgeführt $SSH_CONNECTION
, um mir mitzuteilen, wer sich von wo aus angemeldet hat.
#!/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
Antwort1
Sie können Folgendes überwachen /var/log/authlog
und verwenden, awk
um Ihnen eine Nachricht zu senden, wenn eine bestimmte Zeile übereinstimmt:
tail -f /var/log/authlog | awk '/Accepted pubkey/ { system("mail -s " $0 " [email protected] << EOF\nEOF") }'
Sie können es natürlich /Accepted pubkey/
durch ein anderes Muster ersetzen, das zu Ihrem Fall passt. Ich habe mich dafür entschieden, leere E-Mails mit der Protokollzeile als Betreff zu senden, um das Lesen auf dem MUA zu erleichtern, aber Sie bevorzugen vielleicht etwas wie
system("mail -s New\\ Login [email protected] << EOF\n" $0 "\nEOF")