每当用户连接时,即使只是为了隧道,在 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")

相关内容