Ssh
每當使用者連接時在 SSH 伺服器上執行命令,即使只是為了隧道
作為多人使用的 OpenBSD ssh jumphost 的管理員,我想在任何使用者通過 SSH 連接時執行特定命令,即使只是為了隧道。
這可能嗎?
我試過使用
ForceCommand
,/etc/sshrc
但這些似乎只適用於使用者有互動式會話而不是其他情況。因為我正在執行 OpenBSD,不幸的是,沒有任何基於 PAM 的工作,即This answer on Unix & Linux
該腳本只是
sendmail
使用whoami
and執行$SSH_CONNECTION
來通知我誰登錄以及從哪裡登錄。#!/bin/sh EMAIL=alerts@example.com 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
您可以監控
/var/log/authlog
並awk
在特定行匹配時向您發送消息:tail -f /var/log/authlog | awk '/Accepted pubkey/ { system("mail -s " $0 " admin@example.com << EOF\nEOF") }'
您當然可以
/Accepted pubkey/
用適合您情況的其他模式替換。我選擇以日誌行作為主題發送空電子郵件,以便在 MUA 上更輕鬆地閱讀,但您可能更喜歡類似system("mail -s New\\ Login admin@example.com << EOF\n" $0 "\nEOF")