複数のユーザーが使用するOpenBSD SSHジャンプホストの管理者として、私はすべてのユーザーがSSHを介して接続したときにトンネリングのためのものであっても特定のコマンドを実行したいと思います。
可能ですか?
ForceCommand
試してみましたが、/etc/sshrc
これはユーザーがインタラクティブセッションにいるときにのみ機能しているようですが、そうでなければ機能しないようです。
OpenBSDを実行しているので、残念ながらPAMベースのすべては機能しません。この答えはUnixとLinuxで動作します。
スクリプトは、誰がログインしたのか、どこでログインしたのかを知るためにsendmail
使用されwhoami
、実行されます。$SSH_CONNECTION
#!/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
ベストアンサー1
特定の行が一致した場合は、監視して/var/log/authlog
メッセージawk
を送信できます。
tail -f /var/log/authlog | awk '/Accepted pubkey/ { system("mail -s " $0 " [email protected] << EOF\nEOF") }'
もちろん、/Accepted pubkey/
状況に応じて異なるパターンに置き換えることもできます。 MUAを読みやすくするために、ログ行のタイトルを含む空のメールを送信することを選択しましたが、あなたは次のことを好むかもしれません。
system("mail -s New\\ Login [email protected] << EOF\n" $0 "\nEOF")