使用 key 登录时分开记录操作历史记录
线上服务器一般都是配置 key 登录,一个账号可以多个工作人员连接,操作命令历史却全部记录在一个文件中,当然后查看某条命令是谁执行的时候就不好查了。这时候我们就可以通过配置 histroy 相关环境变量将不同工作人员操作历史分别记录到不同的文件中。具体脚本如下
# 通过登录的 key 分开记录命令历史
# 使用方法:
# 1. 禁用 openssh 密码登录验证
# 2. 设置 openssh 日志级别为 VERBOSE
# 3. 重启 openssh 服务
# 注意:
# 仅适用于 Centos 6.x
# 日期: 2018-03-21
# 作者: liwanggui
hist() {
login_ip='127.0.0.1'
login_name=$USER
}
hist_net() {
login_ip=$(echo $SSH_CLIENT | awk '{print $1}')
local login_port=$(echo $SSH_CLIENT | awk '{print $2}')
local filter_arg1="Connection from ${login_ip} port ${login_port}"
local filter_arg2="Found matching RSA key"
local ssh_logfile="/var/log/secure"
local authorized_keys="${HOME}/.ssh/authorized_keys"
local start_line=$(grep -n "${filter_arg1}" "${ssh_logfile}" | awk -F':' '{print $1}')
local key_md5=$(sed -n "${start_line},$"p "${ssh_logfile}" | grep "${filter_arg2}" | head -n 1 | awk '{print $NF}')
local tmpdir=$(mktemp -d)
while read line; do
comment=$(echo $line | awk '{print $NF}')
echo $line > ${tmpdir}/$comment
done < ${authorized_keys}
cd $tmpdir
for name in $(ls); do
md5=$(/usr/bin/ssh-keygen -lf $name | awk '{print $2}')
if [ $key_md5 = $md5 ]; then
login_name=$name
break
fi
done
cd ; /bin/rm -rf $tmpdir
}
# 判断登录方式
if [ "${SSH_CLIENT}x" = 'x' ]; then
hist
else
hist_net
fi
if [ ! -d /var/log/history ]; then
/bin/mkdir -p /var/log/history
/bin/chmod 777 /var/log/history
fi
if [ ! -f /var/log/history ];then
touch /var/log/history/$login_name
chmod 600 /var/log/history/$login_name
fi
export HISTFILESIZE=4096
export HISTSIZE=2000
export HISTTIMEFORMAT="[%Y-%m-%d %H:%M:%S] [${login_ip}:${login_name}] "
export HISTFILE="/var/log/history/$login_name"
export PROMPT_COMMAND="history -a; history -w; history -c; history -r"
unset login_ip
unset login_name
unset hist
unset hist_net
注意: key 最后的注释应为工作人员的姓名拼音
使用 key 登录时分开记录操作历史记录的更多相关文章
- Tomcat会话超时时怎样记录操作日志,满足安全审计要求
众所周知.在实际的Web应用程序中,会话管理一般都採用Web容器会话管理功能. 使用Tomcat做Webserver也是如此,并且从安全的角度考虑,尽量避免去更改和干预Web容器的会话管理功能. To ...
- Linux下查看/管理当前登录用户及用户操作历史记录
转载自: http://www.cnblogs.com/gaojun/archive/2013/10/24/3385885.html 一.查看及管理当前登录用户 1.使用w命令查看登录用户正在使用的进 ...
- linux ssh 使用深度解析(key登录详解)
SSH全称Secure SHell,顾名思义就是非常安全的shell的意思,SSH协议是IETF(Internet Engineering Task Force)的Network Working Gr ...
- 设置 SSH Key 登录服务器和 Git 服务器
设置 SSH Key 登录服务器 通过 ssh 登录服务器,一直都是用的账号和密码,今天看到一篇文章说这样不安全,使用 ssh key 的方式登录则是更好的选择,因此,研究实践了一下,并记录在这里. ...
- web进阶之jQuery操作DOM元素&&MySQL记录操作&&PHP面向对象学习笔记
hi 保持学习数量和质量 1.jQuery操作DOM元素 ----使用attr()方法控制元素的属性 attr()方法的作用是设置或者返回元素的属性,其中attr(属性名)格式是获取元素属性名的值,a ...
- MVC 记录操作日志与过滤特殊字符
最近进行的MVC系统需要用到记录操作日志和过滤特殊字符的功能,如果每个action中都调用记录日志的方法就太麻烦了,所以根据需要结合mvc的过滤机制 写了个特殊字符验证与记录操作日志的公用类: pub ...
- 利用xshell密钥管理服务器远程登录+VIM dd命令操作之伤之再伤
1.打开Xshell界面,中文界面方便操作,菜单栏:工具——新建用户密钥生成向导 2.密钥类型选择RSA,密钥长度选择2048位,单击下一步继续: 3.很快生成公钥对,单击下一步继续: 4.密钥名称可 ...
- 巧用*_his表记录操作历史
文章转载自「开发者圆桌」一个关于开发者入门.进阶.踩坑的微信公众号 许多OLTP应用的开发者都知道,一些重要的操作要记录操作历史,把操作前的数据备份到历史表,然后再执行相应的修改操作.这样可以获取某个 ...
- Major compaction时的scan操作
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u014393917/article/details/24419355 Major compactio ...
随机推荐
- 配置windows qt开发环境
1.解压缩MinGW-gcc440_1.zip.将解压后的文件夹复制至C盘根目录下.2.安装qt-creator-win-opensource-2.5.2.3.安装qt-win-opensource- ...
- Windows Server 2008 R2服务器遗忘管理员密码解决方案
A goal is a dream with a deadline. Much effort, much prosperity. 在日常的工作中,对于一个网络管理员来讲最悲哀的事情莫过于在没有备用 ...
- Python 函数定义和使用
# 函数的概念 # 概念 # 写了一段代码实现了某个小功能; 然后把这些代码集中到一块, 起一个名字; 下一次就可以根据这个名字再次使用这个代码块, 这就是函数 # 作用 # 方便代码的重用 # 分解 ...
- MySQL主备复制原理、实现及异常处理
复制概述 MySQL支持三种复制方式:基于行(Row)的复制.基于语句(Statement)的复制和混合类型(Mixed)的复制. 基于语句的复制早在3.23版本中就存在,而基于行的复制方式在5.1版 ...
- MySql 查询数据库中所有表名以及对比分布式库中字段和表的不同
查询数据库中所有表名select table_name from information_schema.tables where table_schema='数据库名' and table_type= ...
- HUE中oozie执行shell
Oozie执行Shell,传入参数1. 新建一个workflow 2. 拖入一个shell 3. shell脚本如下 #!/bin/sh sqoop import --connect jdbc:mys ...
- postman(谷歌) httprequester(火狐)
http://www.cnblogs.com/s380774061/p/4624326.html @an http://www.tuicool.com/articles/67Rnaej 测试文档券栈 ...
- Map 的 key、value 是否允许为null
Map的key和value是否允许null? 直接写程序验证一下: import java.util.HashMap; import java.util.Hashtable; import java. ...
- Entity Framework 6 预热、启动优化
虽然文章题目是针对EF的,但涉及的内容不仅仅是EF. 场景介绍 目前在做的一个项目,行业门户,项目部分站点按域名划分如下: user.xxx.com:用户登陆注册 owner.xxx.com:个人用户 ...
- 编辑器上的vim插件,常用到的快捷件
[vim]常用到的插件命令 [Esc] 退出编辑(输入,插入)模式,回到命令模式中(常用)i, I进入插入模式(Insert mode):i 为『从目前光标所在处插入』, I 为『在目前所在行的第一个 ...