kn007 avatar

SSH登录时自动邮件提醒

kn007

Published: 17 Sept 2016 › Updated: 17 Sept 2016SSH登录时自动邮件提醒

SSH登录时自动邮件提醒

好吧,前几天有人问了我这个问题,正好发篇文章分享下我的方法。

以下方法适用OpenSSH,其他根据实际修改:

首先,确认你为OpenSSH使用了PAM,检查“/etc/ssh/sshd_config”,看下“UsePAM”的值是不是定义为“yes”。

接下来,利用pam_exec给OpenSSH做个钩子注册动作,编辑“/etc/pam.d/sshd”,在末尾添加一行:

session    optional     pam_exec.so seteuid /etc/ssh/login-notifications.sh
然后,创建个“login-notifications.sh”脚本来处理邮件发送,通常我会在“/etc/ssh/”下创建,内容如下:
#!/bin/sh
if [ "$PAM_TYPE" != "close_session" ]; then
    MAILTO='kn007@126.com'
    HOSTNAME=$(hostname)
    NOW=$(date)
    echo "Someone from $PAM_RHOST using $PAM_USER logged into $HOSTNAME on $NOW." | mail -s 'SSH Login Notification' $MAILTO
fi
记得把MAILTO值改为你的邮箱。最后为该脚本文件添加执行权限:
chmod +x /etc/ssh/login-notifications.sh
用这种方式的好处是什么呢?

或者说比你通过修改Shell的Profile文件(如bashrc、zshrc等等)来做邮件提醒有什么好处?

第一,免去多种Shell共存时,你都要去修改相应Shell配置文件。(如果你只用Bash Shell,那还好)

第二,免去每新增一个Shell窗口,便邮件提醒你一次。(有时开很多shell窗口来处理事物时,过多邮件提醒,很烦,也很傻)

第三,如果对方登录你的VPS,并不打开SSH窗口,便不会提醒的毛病。(比如我登录VPS,只是想SFTP而非SSH,这种方法也会邮件提醒,而通过修改Shell配置文件的则不会提醒,因为这时还没触发启动Shell)

第四,钩子直接在OpenSSH上,省去各种可能的意外。(比如上面第三点)

OK,就介绍到这里。

注意邮件提醒,需要你的服务器有邮件系统(比如Sendmail、Postfix等),另外还需要“mailx”这个组件来使Shell可发信。

Leave SSH登录时自动邮件提醒 to:

Written by

Read more #ssh posts


Best Posts From kn007

We have not curated any of kn007's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From kn007