我希望当有人登录我的 Linux 服务器时收到通知,并且能够找出登录尝试的位置。我该怎么做?
答案1
答案2
好的,谢谢您回答这个问题。但是,我的做法略有不同,我在全局 bashrc 文件中有一个单行命令。
这是我的解决方案
echo "Login on" `hostname` `date` | mail -s "Login on `hostname` `who am i | awk '{print $5}' | sed 's/[()]//g' | cut -f1 -d "." | sed 's/-/./g'`" [email protected]
假设您已经在 Linux 机器上安装了 mailutils 包。
答案3
如果您在谈论“记录”时想到 ssh,则可以使用 syslog 和 rsyslog 。
对于 rsyslog,请检查:http://www.rsyslog.com/doc/ommail.html 通过一些设置,您可以通过邮件或日志系统堆栈(elk stack、graylog2、splunk 等)发送日志。
答案4
CentOS
在文本编辑器中打开文件 ~/.bash_profile。添加以下行
IP="$(echo $SSH_CONNECTION | cut -d " " -f 1)"
HOSTNAME=$(hostname)
NOW=$(date +"%e %b %Y, %a %r")
echo 'Someone from '$IP' logged into '$HOSTNAME' on '$NOW'.' | mail -s 'SSH Login Notification' YOUR_EMAIL_ADDRESS
如果你正在使用Ubuntu/Debian 将相同内容添加到 ~/.bashrc
有 3 个 ssh 客户端环境变量。
SSH_CLIENT='192.168.223.17 36673 22'
SSH_CONNECTION ='192.168.223.17 36673 192.168.223.229 22'
SSH_TTY=/dev/pts/6
SSH 客户端显示客户端系统的地址、客户端系统上的传出端口号以及服务器上的传入端口。SSH_连接显示客户端的地址、客户端上的传出端口、服务器的地址和服务器上的传入端口。SSH_TTY命名连接所使用的服务器上的伪终端设备,缩写为 Ppty