每当使用 SSH 密钥时发送电子邮件

每当使用 SSH 密钥时发送电子邮件

我有大约 30 台几乎相同的 CentOS 6 服务器,我需要能够使用 rsa 密钥以 root 身份登录来自动推出更新的配置文件。通常这只是 rsync,但有时可能需要在服务器上运行命令,因此也需要 ssh。由于这将作为脚本运行来更新所有 30 台服务器,因此我不想在密钥上有密码。

我那部分一切正常。我创建了 rsa 密钥,将其添加到 root 的authorized_keys中,这样我就可以通过 ssh 或 rsync 到服务器,而无需输入密码。

我已将authorized_keys 设置为仅接受来自单个主机名的密钥,这应该使此设置相对安全。但是,我仍然不太满意它,因此希望将其设置为每次使用此密钥时都向我们的共享技术邮箱发送电子邮件。

很多时候,我会以自己的身份登录这些服务器,并申请获得 root 权限。这很好,并且不想每次登录时都向技术邮箱发送垃圾邮件。我只想在使用 SSH 密钥时收到电子邮件。

这是我到目前为止在 server1[through 30].example.com 上所拥有的内容:

cat /root/.ssh/authorized_keys
from="pusher.example.com",environment="SSHKEY=1" ssh-rsa AAAAB3NzaIwAAAxetcetc== root@pusher

tail -n 3 /root/.bash_profile
if [[ "${SSHKEY}" == "1" ]] ; then
echo 'Either we are getting hacked, or somebody used the SSH key on pusher to push something out to ' `hostname` ' at ' `date` | mail -s "WARNING - ROOT SSH KEY USED ON `hostname`!" [email protected]
fi

这对于 SSH 来说非常有效 - 如果我以我自己的身份登录并运行 su 来获取 root,我不会收到电子邮件,但如果我登录到 Pusher 并运行:

ssh -i /root/.ssh/server1.pri server1.example.com

我收到一封电子邮件。问题是推送文件。如果我运行以下任一:

scp -i /root/.ssh/server1.pri /tmp/file.txt server1.example.com:/tmp/
rsync -e 'ssh -i /root/.ssh/server1.pri' /tmp/test.txt server1.example.com:/tmp/

我仍然没有收到电子邮件。

有没有办法,而不是依赖 bash_profile,将其设置为在使用密钥时发送电子邮件,无论做什么? (或者,仅当它用于 scp 或 rsync 时,我会将密钥限制为仅运行这些?)

答案1

你可能会滥用 /root/.ssh/rc出于您的目的(请参阅 man sshd)并mailx在其中包含命令。

答案2

如果 bash 作为交互式登录 shell 调用,则使用 ~/.bash_profile。 ~/.bashrc 用于非登录 shell。但是,使用该文件并不可靠,因为攻击者可能要求根本不读取 shell 初始化文件。

答案3

从 sshd 手册页的“authorized_keys”部分:

命令=“命令”

指定每当使用此密钥进行身份验证时都执行该命令。用户提供的命令(如果有)将被忽略。如果客户端请求 pty,则该命令在 pty 上运行;否则它会在没有 tty 的情况下运行。如果需要 8 位干净通道,则不得请求 pty 或应指定 no-pty。通过用反斜杠引用命令,可以将引号包含在命令中。此选项可能有助于限制某些公钥仅执行特定操作。一个示例可能是允许远程备份但仅允许其他任何内容的密钥。请注意,客户端可以指定 TCP 和/或 X11 转发,除非明确禁止它们。客户端最初提供的命令可在 SSH_ORIGINAL_COMMAND 环境变量中找到。请注意,此选项适用于 shell、命令或子系统执行。另请注意,此命令可能会被 sshd_config(5) ForceCommand 指令或嵌入在证书中的命令取代。

您可以将该选项添加到您的密钥中,就像添加“from”和“environment”选项一样:

cat /root/.ssh/authorized_keys
from="pusher.example.com",environment="SSHKEY=1" ssh-rsa AAAAB3NzaIwAAAxetcetc== root@pusher

相关内容