作为多人使用的 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")