kn007的个人博客
♥ You are here: Home > > > SSH登录时自动邮件提醒

SSH登录时自动邮件提醒

by | 39 Comments

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

以下方法适用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可发信。


原来有些小伙伴是这样想的。。。
qq%e6%88%aa%e5%9b%be20160918105251
再次说明一下,邮件提醒只是一种安全措施(举措),而不是安全手段(认证或保密)。邮件提醒无法代替任何安全手段,比如“禁止密码,使用密钥登录”、“两步验证”等一些认证手段还是很有必要的。

邮件提醒并不能保障你的密码、密匙不会被盗或者说被泄漏,它只是很单纯的在有人登录的时候提醒你,仅此而已。

转载请注明转自:kn007的个人博客的《SSH登录时自动邮件提醒

donate
有所帮助?

Comments

39 Comments立即评论
Loading...
  1. 你好,好久没来啦,来表示一下我还活着= =

    在郑州备战艺术统考与高考,已经一年多没联系了

    1. MOD回复

      @蚊哥: 欢迎,高考完了,如何?

    2. @kn007: 明年高考,现在正在备考@kn007

    3. MOD回复

      @蚊哥: 好好好,那加油

  2. 哈,我的linode现在是纯粹当做梯子用了,10美元一月的梯子,好像太贵了点。。

    1. MOD回复

      @小怪物: 土豪请随意 :mrgreen:

    2. @kn007: 找了下do和vultr有5美元的VPS,但是各种节点的下载速度都没有linode fremont快,尤其是vultr,听说它日本节点块,压根下载不动,应该不是直连的

    3. MOD回复

      @小怪物: 嗯,这个怎么说呢,也要看你人的位置在哪。这也是有关系的。

  3. LV2回复

    密匙登陆 :roll: 感觉还好

    1. MOD回复

      @牧风: :lol: 好久不见,期待你的大作!(你的博客系统)

icon_wink.gificon_neutral.gificon_mad.gificon_twisted.gificon_smile.gificon_eek.gificon_sad.gificon_rolleyes.gificon_razz.gificon_redface.gificon_surprised.gificon_mrgreen.gificon_lol.gificon_idea.gificon_biggrin.gificon_evil.gificon_cry.gificon_cool.gificon_arrow.gificon_confused.gificon_question.gificon_exclaim.gif