
身為多人使用的 OpenBSD ssh 跳轉主機的管理員,我想在任何使用者透過 SSH 連線時執行特定命令,即使只是為了隧道。
這可能嗎?
我嘗試過使用ForceCommand
and/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")