21 Linux高级篇-日志管理
文章目录
- 学习视频来自于B站【小白入门 通俗易懂】2021韩顺平 一周学会Linux。
- 可能会用到的资料有如下所示,下载链接见文末:
21.1 系统常用的日志
日志文件是重要的系统信息文件,其中记录了许多重要的系统事件,包括用户的登录信息、系统的启动信息、系统的安全信息、邮件相关信息、各种服务相关信息等。日志对于系统安全来说很重要,它记录了系统每天发生的各种事情,可以通过日志来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。也就是说,日志就是用来记录系统的重大事件。
绝大多数系统日志文件保存在目录/var/log/
下(如下图),下表给出了其中最常见的日志:
boot.log:与系统启动相关的日志。
message:存放一些重要的信息。
mysqld.log:和数据库有关的日志。
secure:与安全相关的日志。
vmware-install.log:与vmware安装相关的日志。
yum.log:与yum相关的日志。
日志文件 | 说明 |
---|---|
/var/log/boot.log | 系统启动日志。 |
/var/log/cron | 记录与系统定时任务相关的日志。 |
/var/log/cups/ | 记录打印信息的日志。 |
/var/log/dmesg | 记录了系统在开机时内核自检的信息。也可以使用dmesg命令直接查看内核自检信息。 |
/var/log/btmp | 记录错误登录的日志,二进制文件。不能直接用Vi查看,而要使用lastb命令查看。 命令为:[root@localhost log]#lastb |
/var/log/lastlog | 记录系统中所有用户最后一次的登录时间的日志,二进制文件。使用lastlog命令查看。 |
/var/Iog/mailog | 记录邮件信息的日志。 |
/var/log/message | 记录系统重要消息的日志。这个日志文件中会记录Linux系统的绝大多数重要信息。 如果系统出现问题,首先要检查的应该就是这个日志文件。 |
/var/log/secure | 记录验证和授权方面的信息。 只要涉及账户和密码的程序都会记录,比如系统的登录、ssh的登录、su切换用户,sudo授权, 甚至添加用户和修改用户密码都会记录在这个日志文件中。 |
/var/log/wtmp | 永久记录所有用户的登陆、注销信息,同时记录系统的启动、重启、关机事件,二进制文件。使用last命令查看。 |
/var/tun/ulmp | 记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息。 这个文件不能用Vi查看,而要使用w、who、users等命令查看。 |
下面展示一个应用案例:
【案例1】使用Xshell登录root用户,第一次使用错误的密码,第二次使用正确的密码,看看在日志文件/var/log/secure里有没有记录相关信息。
# 首先清空/var/log/secure的原有内容
[root@CentOS76 ~]# echo '' > /var/log/secure
[root@CentOS76 ~]# cat /var/log/secure
[root@CentOS76 ~]# exit
登出
Connection closed.
Disconnected from remote host(CentOS-any) at 07:45:25.
Type `help' to learn how to use Xshell prompt.
[C:\~]$
Connecting to 192.168.204.131:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
Last failed login: Mon Aug 21 07:45:35 CST 2023 from 192.168.204.1 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Mon Aug 21 07:43:58 2023 from 192.168.204.1
# 输入一次错误密码、一次正确密码后,再次查看/var/log/secure
[root@CentOS76 ~]# cat /var/log/secure
Aug 21 07:45:24 CentOS76 sshd[14914]: pam_unix(sshd:session): session closed for user root
Aug 21 07:45:33 CentOS76 unix_chkpwd[15030]: password check failed for user (root)
Aug 21 07:45:33 CentOS76 sshd[15028]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.204.1 user=root
Aug 21 07:45:33 CentOS76 sshd[15028]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root"
Aug 21 07:45:35 CentOS76 sshd[15028]: Failed password for root from 192.168.204.1 port 56707 ssh2
Aug 21 07:45:37 CentOS76 sshd[15028]: Accepted password for root from 192.168.204.1 port 56707 ssh2
Aug 21 07:45:37 CentOS76 sshd[15028]: pam_unix(sshd:session): session opened for user root by (uid=0)
# 可以看到上述45:35是Failed password,45:37是Accepted password。
21.2 日志管理服务rsyslogd
那既然日志不仅繁杂而且还很重要,究竟是系统中哪个进程负责记录这些日志呢?CentOS6.x的日志服务(后台进程)是syslogd
,CentOS7.6日志服务(后台进程)是rsyslogd
。rsyslogd
功能更强大,并且rsyslogd
的使用、日志文件的格式,和syslogd
服务兼容的。
# 查询Linux中的rsyslogd服务是否启动
ps aux | grep "rsyslog" | grep -v "grep"
# 查询rsyslogd服务的自启动状态
systemctl list-unit-files | grep rsyslog
# 下面是代码实例
# 查询Linux中的rsyslogd服务是否启动
[root@CentOS76 ~]# ps aux | grep "rsyslog"
root 1232 0.0 0.0 222740 5940 ? Ssl 8月20 0:02 /usr/sbin/rsyslogd -n
root 15357 0.0 0.0 112828 972 pts/0 S+ 08:04 0:00 grep --color=auto rsyslog
# 再继续找出上述结果中不包含grep的行
[root@CentOS76 ~]# ps aux | grep "rsyslog" | grep -v "grep" # grep的反向查找
root 1232 0.0 0.0 222740 5940 ? Ssl 8月20 0:02 /usr/sbin/rsyslogd -n
# 查询rsyslogd服务的自启动状态
[root@CentOS76 ~]# systemctl list-unit-files | grep "rsyslog"
rsyslog.service enabled
21.2.1 *日志记录原理
(*号表示本节很重要)那现在有了后台进程rsyslogd
来自动记录日志,那么谁来规定这个所记录日志的格式呢?并且,谁又来控制rsyslogd
每天都能自动进行日志轮替呢?也就是如下图所示:
- 文件
/etc/rsyslog.conf
规定了rsyslogd
记录的日志类型和级别。- 文件
/etc/logrotate.conf
规定了全局的日志轮替规则以及某个文件的日志轮替规则。- 目录
/etc/logrotate.d/
整个都被“include”到了文件/etc/logrotate.conf
里。上述三个文件合力控制了后台进程
rsyslogd
如何来记录日志。此时,再使用重复任务调度进程crond
,每天调度一次logrotate
,就可以实现日志轮替了。
注:下一大节再详细介绍“日志轮替”。
21.2.2 配置文件/etc/rsyslog.conf
# 查看/etc/rsyslog.conf文件的内容
[root@CentOS76 ~]# cat /etc/rsyslog.conf
# rsyslog configuration file
# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html
#### MODULES ####
# The imjournal module bellow is now used as a message source instead of imuxsock.
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
#$ModLoad imklog # reads kernel messages (the same are read from journald)
#$ModLoad immark # provides --MARK-- message capability
# Provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514
# Provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514
#### GLOBAL DIRECTIVES ####
# Where to place auxiliary files
$WorkDirectory /var/lib/rsyslog
# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# File syncing capability is disabled by default. This feature is usually not required,
# not useful and an extreme performance hit
#$ActionFileEnableSync on
# Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf
# Turn off message reception via local log socket;
# local messages are retrieved through imjournal now.
$OmitLocalLogging on
# File to store the position in the journal
$IMJournalStateFile imjournal.state
#### RULES ####
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
mail.* -/var/log/maillog
# Log cron stuff
cron.* /var/log/cron
# Everybody gets emergency messages
*.emerg :omusrmsg:*
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log
local7.* /var/log/boot.log
# ### begin forwarding rule ###
# The statement between the begin ... end define a SINGLE forwarding
# rule. They belong together, do NOT split them. If you create multiple
# forwarding rules, duplicate the whole block!
# Remote Logging (we use TCP for reliable delivery)
#
# An on-disk queue is created for this action. If the remote host is
# down, messages are spooled to disk and sent when it is up again.
#$ActionQueueFileName fwdRule1 # unique name prefix for spool files
#$ActionQueueMaxDiskSpace 1g # 1gb space limit (use as much as possible)
#$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
#$ActionQueueType LinkedList # run asynchronously
#$ActionResumeRetryCount -1 # infinite retries if host is down
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
#*.* @@remote-host:514
# ### end of the forwarding rule ###
上一小节提到配置文件/etc/rsyslog.conf
规定了rsyslogd
记录的日志类型和日志级别。那么这里中的含义是什么呢?从#### RULES ####
那一栏中可以看到,配置日志时的格式为:
# 一般格式
*.* 日志文件
# 例子
mail.* -/var/log/maillog # 将日志类型为mail的所有日志信息,无论什么日志级别,都记录到文件-/var/log/maillog中去。
*.emerg :omusrmsg:* # 无论是什么日志类型,只要日志级别是emerg的日志信息,都记录到相应文件中去。
local7.* /var/log/boot.log # 将日志类型是local7,无论是什么日志级别,都记录到文件/var/log/boot.log中去。
其中第一个*
代表日志类型,第二个*
代表日志级别。常用的“日志类型”和“日志级别”如下表所示:
日志类型 | 含义 | 日志级别 | 含义 |
---|---|---|---|
* | 表示所有类型 | * | 表示所有级别 |
auth | pam产生的日志 | debug | 有调试信息的,日志通信最多 |
authpriv | ssh、ftp等登录信息的验证信息 | info | 一般信息日志,最常用 |
corn | 时间任务相关 | notice | 最具有重要性的普通条件的信息 |
kern | 内核 | warning | 警告级别 |
lpr | 打印 | err | 错误级别,阻止某个功能或者模块不能正常工作的信息 |
邮件 | crit | 严重级别,阻止整个系统或者整个软件不能正常工作的信息 | |
mark(syslog)-rsyslog | 服务内部的信息,时间标识 | alert | 需要立刻修改的信息 |
news | 新闻组 | emerg | 内核崩溃等重要信息 |
user | 用户程序产生的相关信息 | none | 什么都不记录 |
uucp | unix to nuix copy主机之间相关的通信 | 从上到下,日志级别从低到高,记录信息越来越少 | |
local 1-7 | 自定义的日志设备 |
21.2.3 日志文件格式
那根据配置文件中的文件类型和文件级别,rsyslogd
后台进程就写下了相应的日志文件。但写下来不是目的,得让我们人类看懂才行啊,换句话说,这些日志中都包含了哪些内容呢?下面就来说明,由日志服务rsyslogd记录的日志文件,日志文件的格式包含以下4列:
- 事件产生的时间
- 产生事件的服务器的主机名
- 产生事件的服务名或程序名
- 事件的具体信息
比如现在就拿/var/log/secure
日志举例,来分析一下这个日志中的内容:
[root@CentOS76 ~]# cat /var/log/secure
Aug 21 07:45:24 CentOS76 sshd[14914]: pam_unix(sshd:session): session closed for user root
Aug 21 07:45:33 CentOS76 unix_chkpwd[15030]: password check failed for user (root)
Aug 21 07:45:33 CentOS76 sshd[15028]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.204.1 user=root
Aug 21 07:45:33 CentOS76 sshd[15028]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root"
Aug 21 07:45:35 CentOS76 sshd[15028]: Failed password for root from 192.168.204.1 port 56707 ssh2
Aug 21 07:45:37 CentOS76 sshd[15028]: Accepted password for root from 192.168.204.1 port 56707 ssh2
Aug 21 07:45:37 CentOS76 sshd[15028]: pam_unix(sshd:session): session opened for user root by (uid=0)
日志
/var/log/secure
中记录的是用户验证和授权方面的信息:
- 第一列:Aug 21 07:45:24,显然是记录了事件产生的时间。
- 第二列:CentOS76,记录了产生事件的服务器的主机名。
- 第三列:sshd[14914],记录了产生事件的服务名。
- 第四列:后面记录的就是事件的具体信息。
下面展示一个实际案例:
【案例1】在/etc/rsyslog.conf中添加一个日志文件/var/log/lyl.log,记录所有类型、所有级别的日志信息。然后重启、登录,查看sshd服务相关事件是否被记录下来。
[root@CentOS76 ~]# vim /etc/rsyslog.conf
########################################
# 在文件中添加如下代码:
# 增加自定义的日志
*.* /var/log/lyl.log
########################################
[root@CentOS76 ~]# > /var/log/lyl.log # 创建文件,当然不创建也行
[root@CentOS76 ~]# cat /var/log/lyl.log # 查看当前文件内容,显然为空
[root@CentOS76 ~]# reboot
# 重启后立即查看日志信息
[root@CentOS76 ~]# cat /var/log/lyl.log | grep sshd
Aug 21 08:39:49 CentOS76 sshd[1198]: Server listening on 0.0.0.0 port 22.
Aug 21 08:39:49 CentOS76 sshd[1198]: Server listening on :: port 22.
Aug 21 08:40:11 CentOS76 sshd[1871]: Accepted password for root from 192.168.204.1 port 58895 ssh2
Aug 21 08:40:11 CentOS76 sshd[1871]: pam_unix(sshd:session): session opened for user root by (uid=0)
注:做完该案例先别急着删,下一节案例“自定义日志轮替”还会用到。
21.3 日志轮替
前面在介绍日志记录原理时提到了“日志轮替”。通俗来说,“日志轮替”就是每隔一段时间(每天/每周/每月)或者是当日志文件足够大了之后,就把旧的日志文件移动并改名,同时建立新的空日志文件来记录新的内容,当旧日志文件数量足够多时还要删除最旧的日志,比如经常听说“小区监控一般保存一个月左右”,就类似于这种情况。比如下图就给出了日志轮替的示意图:
上图在发生日志轮替时,日志文件会自动改名,但也有无需改名的配置,那同样也有控制轮替周期的参数。在CentOS7中,这些如何进行轮替的配置参数都存放在/etc/logrotate.conf
文件中,然后通过/etc/cron.daily/
目录下的logrotate
进行日志轮替管理:
比如现在在
/etc/logrotate.conf
文件中修改/var/log/secure
参数:
- 没有“dateext”参数:和上图所示情况相同。
- 有“dateext”参数:那么日志会用日期来作为日志文件的后缀,例如“secure-20201010”。这样日志文件名不会重叠,也就不需要日志文件的改名,只需要指定保存日志个数,删除多余的日志文件即可。
21.3.1 配置文件/etc/logrotate.conf & /etc/logrotate.d/
规定日志轮替的配置文件有以下两个:
- 文件
/etc/logrotate.conf
:为logrotate
的全局配置文件,规定了全局的日志轮替策略/规则,也可以单独给某个日志文件指定策略,若没指定就会采用默认策略。- 目录
/etc/logrotate.d
下的所有文件:每个文件都单独给某个日志文件指定轮替策略。但该目录中的文件都会被“include”到上面的/etc/logrotate.conf
配置文件中。
/etc/logrotate.conf文件内容:
# 下面展示/etc/logrotate.conf的内容,并附上中文注释
[root@CentOS76 ~]# cat /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly,每周对日志文件进行一次轮替
weekly
# keep 4 weeks worth of backlogs,共保存4份日志文件,当建立新的日志文件时,旧的将会被删除
rotate 4
# create new (empty) log files after rotating old ones,创建新的空的日志文件,在日志轮替后
create
# use date as a suffix of the rotated file,使用日期作为日志轮替文件的后缀
dateext
# uncomment this if you want your log files compressed,日志文件是否压缩。如果取消注释,则日志会在转储的同时进行压缩
#compress
# RPM packages drop log rotation information into this directory
# /etc/logrotate.d/目录中所有的配置也会被读取进来,该目录一般存放某文件的单独轮替规则,和写在下面等价。
include /etc/logrotate.d
# no packages own wtmp and btmp -- we'll rotate them here
# 下面是单独设置,优先级更高。
# 给/var/log/wtmp单独设置的轮替规则
/var/log/wtmp {
monthly # 每月对日志文件进行一次轮替
create 0664 root utmp # 建立的新日志文件,权限是0664,所有者是root,所属组是utmp组
minsize 1M # 日志文件最小轮替大小是1MB。也就是日志一定要超过1MB才会轮替,否则就算时间达到一个月,也不进行日志转储。
rotate 1 # 仅保留一个日志备份。也就是只有wtmp和wtmp.1日志保留而已
}
# 给/var/log/btmp单独设置的轮替规则
/var/log/btmp {
missingok # 如果日志不存在,则忽略该日志的警告信息
monthly
create 0600 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
/etc/logrotate.d/目录内容:
比如下面/etc/logrotate.d/bootlog
就记录了/var/log/boot.log
的日志轮替规则:
[root@CentOS76 ~]# ls /etc/logrotate.d/
bootlog cups glusterfs libvirtd mysql ppp samba syslog yum
chrony firewalld iscsiuiolog libvirtd.qemu numad psacct sssd wpa_supplicant
[root@CentOS76 ~]# cat /etc/logrotate.d/bootlog
/var/log/boot.log
{
missingok
daily
copytruncate
rotate 7
notifempty
}
日志轮替参数说明:
那上面这两个日志轮替配置文件中的配置是什么意思呢?也就是下表给出的日志轮替参数说明:
参数 | 参数说明 |
---|---|
daily | 日志的轮替周期是每天 |
weekly | 日志的轮替周期是每周 |
monthly | 日志的轮替周期是每月 |
rotate 数字 | 保留的日志文件的个数。0指没有备份。 |
compress | 日志轮替时,旧的日志进行压缩。 |
create mode owner group | 建立新日志,同时指定新日志的权限与所有者和所属组。 |
mail address | 当日志轮替时,输出内容通过邮件发送到指定的邮件地址。 |
missingok | 如果日志不存在,则忽略该日志的警告信息。 |
notifempty | 如果日志为空文件,则不进行日志轮替。 |
minsize 大小 | 日志轮替的最小值。也就是日志一定要达到这个最小值才会轮替,否则就算时间达到也不轮替。 |
size 大小 | 日志只有大于指定大小才进行日志轮替,而不是按照时间轮替。 |
dateext | 使用日期作为日志轮替文件的后缀。 |
sharedscripts | 在此关键字之后的脚本只执行一次。 |
prerotate/endscript | 在日志轮替之前执行脚本命令。 |
postrotate/endscript | 在日志轮替之后执行脚本命令。 |
下面展示一个应用案例:
【案例1】将上一大节最后的案例/var/log/lyl.log日志加入日志轮替。
方法一:直接在/etc/logrotate.conf配置文件中写入该日志的轮替策略。
方法二:【推荐】/etc/logrotate.d/目录中新建立该日志的轮替策略文件。推荐使用该方法,因为系统中需要轮替的日志非常多,如果全都直接写入/etc/logrotate.conf配置文件,那么这个文件的可管理性就会非常差,不利于文件的维护。注:具体轮替的效果可以参考/var/log下的boot.log情况
[root@CentOS76 ~]# vim /etc/logrotate.d/lyllog
#################################
# 在文件中添加如下内容,以规定轮替策略:
/var/log/lyl.log {
missingok # 如果日志不存在,则忽略该日志的警告信息。
daily # 每天轮替一次
copytruncate # 拷贝截断
rotate 7 # 最多保留7份日志
notifempty # 如果日志为空文件,则不进行日志轮替。
}
#################################
[root@CentOS76 ~]# ll /etc/logrotate.d/
总用量 72
-rw-r--r--. 1 root root 91 9月 30 2020 bootlog
-rw-r--r--. 1 root root 160 9月 19 2018 chrony
-rw-r--r--. 1 root root 71 9月 30 2020 cups
-rw-r--r--. 1 root root 93 10月 1 2020 firewalld
-rw-r--r--. 1 root root 758 10月 2 2020 glusterfs
-rw-r--r--. 1 root root 172 9月 30 2016 iscsiuiolog
-rw-r--r--. 1 root root 165 10月 14 2020 libvirtd
-rw-r--r--. 1 root root 142 10月 14 2020 libvirtd.qemu
-rw-r--r--. 1 root root 302 8月 21 10:17 lyllog
-rw-r--r--. 1 root root 972 4月 13 2019 mysql
-rw-r--r--. 1 root root 106 4月 11 2018 numad
-rw-r--r--. 1 root root 136 2月 28 2020 ppp
-rw-r--r--. 1 root root 408 8月 3 2017 psacct
-rw-r--r--. 1 root root 115 10月 14 2020 samba
-rw-r--r--. 1 root root 237 10月 16 2020 sssd
-rw-r--r--. 1 root root 224 10月 13 2020 syslog
-rw-r--r--. 1 root root 100 10月 31 2018 wpa_supplicant
-rw-r--r--. 1 root root 103 10月 2 2020 yum
# 于是后面lyl.log也就会每天自动轮替了,有点类似于下面的boot.log
[root@CentOS76 ~]# ll /var/log | grep boot
-rw-------. 1 root root 28520 8月 21 10:09 boot.log
-rw-------. 1 root root 82271 7月 27 10:13 boot.log-20230727
-rw-------. 1 root root 14399 8月 20 17:35 boot.log-20230820
21.3.2 可执行文件/etc/cron.daily/logrotate
日志轮替之所以可以在指定的时间备份日志,是依赖系统定时任务crond。在目录/etc/cron.daily/
下就会发现可执行文件logrotate
,这个依赖定时任务执行的可执行文件就是日志轮替的关键。
[root@CentOS76 ~]# ll /etc/cron.daily/
总用量 12
-rwx------. 1 root root 219 4月 1 2020 logrotate
-rwxr-xr-x. 1 root root 618 10月 30 2018 man-db.cron
-rwx------. 1 root root 208 4月 11 2018 mlocate
至此,前面的“日志记录原理”一节的图便介绍完毕。
21.4 内存日志
最后,来看一下“内存日志”。Linux系统中有一部分日志是实时变化的,会先写到内存中,而不是先写到文件中去,这部分日志就被称为“内存日志”,如与内核相关的日志。注意,重启后内存日志会被清空!journalctl
指令可以查看内存日志,下面是journalctl
的常用指令:
journalctl # 查看全部
journalctl -n 3 # 查看最新3条
journalctl --since 19:00 --until 19:10:10 # 查看起始时间到结束时间的日志可加日期
journalctl -p err # 报错日志
journalctl -o verbose # 日志详细内容
journalctl _PID=1245 _COMM=sshd # 查看包含这些参数的日志(在详细日志查看)
journalctl | grep sshd # 查找sshd相关的日志
下面展示一个应用案例:
【案例1】使用journalctl | grep sshd
来查看系统重启前后,内存日志是否有变化。
[root@CentOS76 ~]# journalctl | grep sshd
8月 21 10:09:26 CentOS76 sshd[1195]: Server listening on 0.0.0.0 port 22.
8月 21 10:09:26 CentOS76 sshd[1195]: Server listening on :: port 22.
8月 21 10:10:28 CentOS76 sshd[1886]: Accepted password for root from 192.168.204.1 port 62073 ssh2
8月 21 10:10:29 CentOS76 sshd[1886]: pam_unix(sshd:session): session opened for user root by (uid=0)
[root@CentOS76 ~]# reboot
[root@CentOS76 ~]# journalctl | grep sshd
8月 21 10:46:25 CentOS76 sshd[1190]: Server listening on 0.0.0.0 port 22.
8月 21 10:46:25 CentOS76 sshd[1190]: Server listening on :: port 22.
8月 21 10:46:39 CentOS76 sshd[1729]: error: Received disconnect from 192.168.204.1 port 63284:0: [preauth]
8月 21 10:46:39 CentOS76 sshd[1729]: Disconnected from 192.168.204.1 port 63284 [preauth]
8月 21 10:46:40 CentOS76 sshd[1733]: Accepted password for root from 192.168.204.1 port 63287 ssh2
8月 21 10:46:40 CentOS76 sshd[1733]: pam_unix(sshd:session): session opened for user root by (uid=0)