每當使用者連接時,即使只是為了隧道,在 SSH 伺服器上執行命令

每當使用者連接時,即使只是為了隧道,在 SSH 伺服器上執行命令

身為多人使用的 OpenBSD ssh 跳轉主機的管理員,我想在任何使用者透過 SSH 連線時執行特定命令,即使只是為了隧道。

這可能嗎?

我嘗試過使用ForceCommandand/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/authlogawk在特定行匹配時向您發送訊息:

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")

相關內容