使用ssh服务器管理远程主机

 前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 

目录

一、配置网卡服务

1、配置网卡参数

2、创建网络会话

3、绑定两块网卡

二、远程控制服务

1、配置sshd服务

2、在Windows连接

3、安全密钥验证

4、远程传输命令

三、不间断会话服务-tmux工具

1、管理远程会话

2、管理多窗格

3、会话共享功能

四、检索日志信息

1、journalctl命令

致谢


一、配置网卡服务

1、配置网卡参数

1.1、nmtui命令

 [root@linux ~]# nmtui

选中配置网卡按钮并按下回车键:

在RHEL 5、RHEL 6系统及其他早期Linux系统中,网卡的名称一直都是eth0,eth1,eth2等命名;在RHEL 7中则变成类似于eno167777736、eno33554968这样的;而RHEL 8系统最新的名称是ens 160、ens 192等等诸如此类;

选中要配置的网卡名称,然后按下编辑按钮

把网卡IPv4的配置方式改成手动模式:

按下显示详细信息按钮:

现在,在服务器主机的网络信息中填写IP地址192.168.10.10/24。24代表子网掩码中前24位为网络号,后8位是主机号,和写成255.255.255.0的效果一样。网关、DNS信息暂可不必填写,有用到时会继续编辑网卡文件

单击OK按钮保存配置

单击Back按钮结束配置工作

至此,在Linux系统中配置网络的步骤就结束了

发现,有时候在安装REHL 8系统时默认没有激活网卡。只需要用Vim编辑器将网卡配置文件中的ONBOOT参数修改成yes,这样在系统重启后网卡就被激活了

 [root@linux ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
 TYPE=Ethernet
 BOOTPROTO=static
 DEFROUTE=yes
 ONBOOT=yes
 ...

修改完Linux系统中的服务配置文件后,并不会对服务程序立即生效。手动重启相应的服务:

 [root@linux ~]# nmcli connection reload ens160
 [root@linux ~]# nmcli connection up ens160
 ...
 [root@linux ~]# ping 192.168.10.10
 ...成功...

2、创建网络会话

1、nmcli命令

HREL和CentOS系统默认使用NetWorkManager来提供网络服务,这是一种动态管理网络配置的守护进程,能够让网络设备保持连接状态。可以使用nmcli命令来管理NetWorkManager服务程序。nmcli是一款基于命令行的网络配置工具;

 [root@linux ~]# nmcli connection show 
 NAME          UUID                                  TYPE      DEVICE  
 System ens33  c96bc909-188e-ec64-3a96-6a90982b08ad  ethernet  ens33   
 docker0       fe26450a-2d8b-42a4-b68f-3c0b86d1ba73  bridge    docker0
 ​
 [root@linux ~]# nmcli connection show System\ ens33 
 connection.id:                          System ens33
 connection.uuid:                        c96bc909-188e-ec64-3a96-6a90982b08ad
 connection.stable-id:                   --
 ...

另外,RHEL 8系统支持网络会话功能,允许用户在多个配置文件中快速切换(类似firewalld防火墙服务中的区域技术)。只需要在不同的环境中激活相应的网络会话,皆可以实现网络配置信息的自动切换

使用nmcli命令并按照"connection add con-name type ifname"的格式来创建网络会话。

 # 创建一个网络会话:'company';ifname参数指定本机的网卡名称;autoconnect to参数设置该网络会话默认不被自动激活;ip4和gw4参数手动指定网络的IP地址
 [root@linux ~]# nmcli connection add con-name company ifname ens33 autoconnect no type ethernet ip4 192.168.10.10/24 gw4 192.168.10.1
 Connection 'company'(...) successfully added
 ​
 # 再创建一个家庭所使用网络会话:'house';因为要从外部DHCP服务器自动获得IP,所以这里不需要手动指定
 [root@linux ~]# nmcli connection add con-name house type ethernet ifname ens33
 Connection 'house'(...) successfully added

创建成功后,可以使用nmcli命令查看创建的所有网络会话

 [root@linux ~]# nmcli connection show
 NAME          UUID                                  TYPE      DEVICE  
 System ens33  c96bc909-188e-ec64-3a96-6a90982b08ad  ethernet  ens33   
 docker0       fe26450a-2d8b-42a4-b68f-3c0b86d1ba73  bridge    docker0 
 company       54902e3d-3d5d-42e0-a080-6047e8669c3c  ethernet  --      
 house         5aa92b65-1b98-424a-acbd-b11310a2d71d  ethernet  --

使用nmcli命令配置过的网络会话是永久生效的,这样当上班后,顺手company会话,网卡信息就自动配置好了

[root@linux ~]# nmcli connection up company
...
[root@linux ~]# ifconfig

注意,以上为桥接模式,请把虚拟机的网络适配器切换成桥接模式;

后续不需要网卡会话了,直接用delete删除:

 [root@linux ~]# nmcli connection delete house 
 Connection 'house' (5aa92b65-1b98-424a-acbd-b11310a2d71d) successfully deleted.
 [root@linux ~]# nmcli connection delete company 
 Connection 'company' (54902e3d-3d5d-42e0-a080-6047e8669c3c) successfully deleted.

3、绑定两块网卡

一般来讲,生产环境必须提供7*24小时的网络传输服务;绑卡技术不仅能够提高网络传输速度,还可以确保在其中一块网卡出现故障时,依然可以正常提供网络服务。

在虚拟机系统中再添加一块网卡设备,确保两块网卡都处于同一种网络连接模式中;处于相同模式的网卡设备才被允许进行网卡绑定,否则这两块网卡无法互相传送数据。

这次使用nmcli命令来配置网卡设备参数;网卡绑定的理论知识类似于RAID硬盘组,需要对参与绑定网卡设备逐个进行“初始设置”。注意:这些原本独立的网卡设备此时需要被配置成为一块"从属"网卡,服务于"主"网卡,不应该再有自己的IP地址等信息。进行初始设置后,就可以支持网卡绑定:

1、创建出一个bond网卡

首先创建一个bond网卡,命令与参数的意思是创建了一个类型为bond(绑定)、名称为bond0、网卡名为bond0的绑定设备,模式为balance-rr:

 [root@linux ~]# nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=balance-rr" 
 Connection 'bond0' (2452b80d-7487-403d-847c-7c1b3cc19dd6) successfully added.

这里使用的balance-rr网卡绑定模式,rr是round-robin的缩写。它的特点是会根据设备顺序依次传输数据包,提供负载均衡的效果,让宽带变得更大,一旦某个网卡故障马上切换到另外一台设备上,保证网络传输不被中断。

而active-backup网卡绑定模式也比较常用,特点是平时只有一块网卡正常工作,另一个设备待命,一旦出现损坏时自动顶替上去。

2、向bond0添加从属网卡

刚刚创建的bond0仅仅是个名称,接下来把ens33和ens192网卡添加进去。"con-name"参数后面接的是从属网卡名称,可以随时设置,而"ifname"参数后面接的是两块网卡名称

 [root@linux ~]# nmcli connection add type ethernet slave-type bond con-name bond0-port1 ifname ens33 master bond0
 ​
 [root@linux ~]# nmcli connection add type ethernet slave-type bond con-name bond0-port2 ifname ens160 master bond0

3、配置bond0设备的网卡信息

下面使用nmcli命令依此配置网卡的IP地址及子网掩码、网关、DNS、搜索域和手动配置等参数;不习惯可编辑网卡配置文件或nmtui方式完成:

 [root@linux ~]# nmcli connection modify bond0 ipv4.address 192.168.10.10/24
 [root@linux ~]# nmcli connection modify bond0 ipv4.gateway 192.168.10.10
 [root@linux ~]# nmcli connection modify bond0 ipv4.dns 114.114.114.114
 [root@linux ~]# nmcli connection modify bond0 ipv4.dns-search baidu.com
 [root@linux ~]# nmcli connection modify bond0 ipv4.method manual

4、启动

 [root@linux ~]# nmcli device status
 DEVICE   TYPE      STATE                   CONNECTION    
 ens33    ethernet  connected               System ens33  
 ens37    ethernet  connected               System ens160 
 bond0    bond      connected               bond0         
 docker0  bridge    connected (externally)  docker0       
 lo       loopback  unmanaged               --   [root@linux ~]# nmcli connection up bond0
 Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
 [root@linux ~]# nmcli device status
 DEVICE   TYPE      STATE                   CONNECTION    
 ens33    ethernet  connected               System ens33  
 ens37    ethernet  connected               System ens160 
 bond0    bond      connected               bond0         
 docker0  bridge    connected (externally)  docker0       
 lo       loopback  unmanaged               --   

当访问192.168.10.10这个主机IP地址的时候,实际上是由两块网卡设备在共同提供服务。接下来随机移除一块网卡设备;可以非常清晰地看到网卡切换的过程,然后另一块网卡会继续为用户提供服务

二、远程控制服务

1、配置sshd服务

SSH(Secure Shell)是一种能够以安全的方式提供远程登录的协议,也是目前远程管理Linux系统的首选方式。在此之前一般使用FTP或Telnet来进行远程登录(不安全)。

要使用SSH协议来远程管理Linux系统,则需要部署配置sshd服务程序。sshd是基于SSH协议开发的一款远程管理服务程序,不仅方便还提供两种安全验证方法:

  • 基于口令的验证—用账户密码来验证登录
  • 基于密钥的验证—需要在本地生成密钥对,然后把密钥对中的公钥上传至服务器,并与服务器中的公钥进行比较

sshd服务的配置信息保存在/etc/ssh/sshd_config文件中。运维人员一般会把保存着最主要的配置信息的文件称为主配置文件,而配置文件中有许多以#号开头的注释行,要想要这些配置参数生效,需要在修改参数后再去掉前面的#号。sshd服务配置文件中包含的重要参数如下:

参数 作用
Port 22 默认的sshd服务端口
ListenAddress 0.0.0.0 设定sshd服务器监听的IP地址
Protocol 2 SSH协议的版本号
HostKey /tc/ssh//ssh_host_key SSH协议版本为1时,DES私钥存放的位置
HostKey /etc/ssh/ssh_host_rsa_key SSH协议版本为2时,RSA私钥存放的位置
HostKey /etc/ssh/ssh_host_dsa_key SSH协议版本为2时,DSA私钥存放的位置
PermitRootLogin yes 设定是否允许root管理员直接登录
StrictModes yes 当远程用户的私钥改变时直接拒绝连接
MaxAuth Tries 6 最大密码尝试次数
MaxSession 10 最大终端数
PasswordAuthentication yes 是否允许密码验证
PermitEmptyPasswords no 是否允许空密码登录(不安全)

使用两台虚拟机实验:

主机地址 操作系统 作用
10.0.0.2 Linux 服务器
10.0.0.3 Linux 客户端

在RHEL 8系统中,已经默认安装并启用了sshd服务程序;在客户端使用ssh命令进行远程连接服务器;退出登录执行exit命令、第一次访问需要输入yes来确认对方主机的指纹信息:

 [root@localhost ~]# ssh 10.0.0.2
 The authenticity of host '10.0.0.2 (10.0.0.2)' can't be established.
 ECDSA key fingerprint is SHA256:gRxmqm6W3F/y+4CJZzPH8QRh8vs2eQqISy2rmsf34Fw.
 ECDSA key fingerprint is MD5:2b:8b:63:36:e7:b2:f2:67:83:e0:1d:02:8e:fa:0d:fb.
 Are you sure you want to continue connecting (yes/no)? y
 root@10.0.0.2's password:   # 此处输入服务器管理员密码
 Activate the web console with: systemctl enable --now cockpit.socket
 ​
 Register this system with Red Hat Insights: insights-client --register
 Create an account or view all your systems at https://red.ht/insights-dashboard
 Last failed login: Sun Jul  7 19:16:46 CST 2024 from 10.0.0.3 on ssh:notty
 There was 1 failed login attempt since the last successful login.
 Last login: Sun Jul  7 19:12:27 2024 from 10.0.0.1

如果禁止以root管理员的身份登录到远程服务器,则可大大降低被黑客暴力破解密码的几率。

 [root@linux ~]# vim /etc/ssh/sshd_config
 ...
 42 #LoginGraceTime 2m
  43 PermitRootLogin no
  44 #StrictModes yes
  45 #MaxAuthTries 6
  46 #MaxSessions 10
  [root@linux ~]# systemctl restart sshd
  [root@linux ~]# systemctl enable sshd      # 开机自启

这样当root管理员来尝试访问sshd服务程序时,系统会提示不可访问的错误信息。

 [root@linux ~]# ssh 10.0.0.2
 root@10.0.0.2's password: 
 Permission denied, please try again.

2、在Windows连接

可以使用Xshell、Putty、SecureCRT、Secure Shell Client等工具连接:

3、安全密钥验证

加密是对信息进行编码和解码的技术,通过一定的算法(密钥)将原本能直接被阅读的明文信息转换成密文形式。密钥即使密文的钥匙,有私钥和公钥之分。传输数据时,如果担心被他人监听或截取,即可以在传输前先使用公钥对数据加密处理,然后再行传送。这样只有掌握私钥的用户才能解密这段数据;

第1步:在客户端主机中生成"密钥对",记住是客户端

[root@client ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:5m6KcJIo4OOvnMPSlopZBPuNCpVgScH09LVkvCQXC7c root@client
The key's randomart image is:
+---[RSA 2048]----+
|o+.. ..*.        |
|..+ ..*++        |
|oo . .+E.        |
|.+ .   .         |
|o +     S        |
|o= +   o         |
|=+B.o   .        |
|B**+ . ..        |
|*B+.. .o.        |
+----[SHA256]-----+

第2步:把客户端主机中生成的公钥文件传送至远程服务器:

[root@client ~]# ssh-copy-id 10.0.0.2
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@10.0.0.2's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '10.0.0.2'"
and check to make sure that only the key(s) you wanted were added.

第3步:对服务器进行设置,使其只允许密钥验证,拒绝传统的口令验证方式。保存并重启sshd服务:

 [root@Server ~]# vim /etc/ssh/sshd_config
 67 # To disable tunneled clear text passwords, change to no here!
 68 #PasswordAuthentication yes
 69 #PermitEmptyPasswords no
 70 PasswordAuthentication no

第4步:在客户端尝试登录到服务器,此时无须输入密码也可成功登录

[root@client ~]# ssh 10.0.0.2
Activate the web console with: systemctl enable --now cockpit.socket

Register this system with Red Hat Insights: insights-client --register
Create an account or view all your systems at https://red.ht/insights-dashboard
Last login: Sun Jul  7 19:42:19 2024 from 10.0.0.2

如果用户没有密钥信息,即便有口令密码也会被拒绝,连输入密码的机会都不给!!

4、远程传输命令

scp(secure copy)是一个基于SSH协议在网络之间进行安全传输的命令;能够通过网络传送数据,而且所有的数据都将进行加密处理:

语法:”scp [参数] 本地文件 远程账户@远程IP地址:远程目录“。其参数如下:

参数 作用
-v 显示详细的连接进度
-P 指定远程主机的sshd端口号
-r 用于传送文件夹
-6 使用IPV6协议

使用 scp命令复制文件:需要以绝对路径指定本地文件的位置; 递归复制文件夹:如需复制整个文件夹,需添加 - 参数(原文中参数未完整显示,但通常为 -r 或 --recursive)。 指定远程主机:使用远程主机的IP地址,并在IP地址后添加冒号,然后指定目标文件夹。 身份验证:当前用户名为 root,使用远程服务器密码进行验证。也可以使用 用户名@主机地址 格式指定用户身份。 基于SSH协议:scp 命令基于SSH协议,如果已设置密钥验证,则在传输文件时不需要输入账户和密码。

[root@client ~]# echo "Welcome to Linux" > readme.txt
[root@client ~]# scp /root/readme.txt 10.0.0.2:/home
readme.txt                                                                                                                                                                     100%   17    23.9KB/s   00:00    

还可以使用scp命令把远程服务器上的文件下载的本地主机:

[root@client ~]# scp 10.0.0.2:/etc/redhat-release /root
redhat-release                                                                                                                                                                 100%   45    47.8KB/s   00:00    
[root@client ~]# cat redhat-release 
Red Hat Enterprise Linux release 8.9 (Ootpa)

三、不间断会话服务-tmux工具

Terminal multiplexer是一款能够实现多窗口远程控制的开源服务程序,也叫终端复用器,简称Tmux。就是为了解决网络异常中断或为了同时控制多个远程终端窗口而设计的程序。用户还能使用Tmux服务程序同时在多个远程会话中自由切换,实现以下功能:

  • 会话恢复:即便网络中断,也可让会话随时恢复,确保用户不会失去对远程会话的控制
  • 多窗口:每个会话都是独立运行的,拥有各自独立的输入输出终端窗口
  • 会话共享:当多个用户同时登录到远程服务器,此功能实现输入输出信息共享

RHEL 8中、默认没有安装:

[root@Server ~]# dnf install tmux
Updating Subscription Management repositories.
Last metadata expiration check: 0:00:34 ago on Sun 07 Jul 2024 08:22:30 PM CST.
Package tmux-2.7-3.el8.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!

1、管理远程会话

直接敲击tmux命令进入到会话窗口中;发现,会话的终端底部出现了一个绿色的状态栏,分别显示的是会话编号、名称、主机名及系统时间

退出会话的命令是exit,敲击后即可返回到正常的终端界面:

会话窗口的编号是从0开始自动排序,接下来创建一个指定名称为backup的会话窗口

[root@Server ~]# tmux new -s backup

突然要去忙其他事情,但会话窗口中执行的进程还不能被中断,此时可以用death参数将会话隐藏到后台。嫌麻烦可以直接关闭窗口,Tmux服务程序会自动帮我们进行保存:

[root@linux ~]# tmux detach
[detached (from session backup)]

这样执行过后的服务和进程都会一直在后台默默运行,不会因为窗口被关闭而造成数据丢失:查看有哪些后台进程:

[root@Server ~]# tmux ls
backup: 1 windows (created Sun Jul  7 20:30:15 2024) [209x42]

我们只需要查看一下刚刚离线的会话名称,然后尝试恢复回来就可以继续工作了:直接attach+会话编号即可:

[root@Server ~]# tmux attach -t backup

不需要这个Tmux会话了,可以事先attach接入,再exit命令退出。或者直接kill进行关闭:

[root@Server ~]# tmux attach -t backup
[exited]
[root@Server ~]# tmux ls
no server running on /tmp/tmux-0/default

在生产环境中,其实直接使用tmux命令执行要运行的命令,这样在命令中的一切操作也都会被记录下来,当命令执行结束后后台会话也会自动结束

[root@Server ~]# tmux new "vim memo.txt"

2、管理多窗格

先创建一个会话。创建上下切割的多窗格终端界面可以用"tmux split-window"命令;创建左右切割的多窗格终端界面用"tmux split-window-h"命令

同时按下<ctrl>+<b>+<方向键>调整窗口的尺寸

如果需要切换到其他窗格进行工作,但又不能关闭当前的窗格:

命令 作用
tmux select-pane -U 切换至上方的窗格
tmux select-pane -D 切换至下方的窗格
tmux select-pane -L 切换至左方的窗格
tmux select-pane -R 切换至右方的窗格

窗格位置互换命令:

命令 作用
tmux swap-pane -U 将当前窗格与上方的窗格互换
tmux swap-pane -D 将当前窗格与下方的窗格互换
tmux swap-pane -L 将当前窗格与左方的窗格互换
tmux swap-pane -R 将当前窗格与右方的窗格互换

其实这还是有些麻烦,实际上Tmux服务提供了以<ctrl>+<b>同时按下相关的一些列快捷键。是先同时按下<ctrl>+<b>按键,然后松手后再按下后续按键,不是一起按下:

快捷键 作用
% 划分左右两个窗格
'' 划分上下两个窗格
<方向键> 切换到上下左右相邻的一个窗格
; 切换至上一个窗格
o 切换至下一个窗格
{ 将当前窗格与上一个窗格位置互换
} 将当前窗格与下一个窗格位置互换
x 关闭窗格
! 将当前窗格拆分成独立窗口
q 显示窗格编号

3、会话共享功能

当多个用户同时控制主机时,可以把屏幕内容共享出来,也就是说每个用户都能看到相同的内容,还能同时一起操作;流程拓扑图如下:

要实现此功能,首先使用ssh服务将客户端A远程连接到服务器。随后使用tmux服务创建一个新的会话窗口,名称为share:

[root@client A ~]# ssh 10.0.0.2
Activate the web console with: systemctl enable --now cockpit.socket

Register this system with Red Hat Insights: insights-client --register
Create an account or view all your systems at https://red.ht/insights-dashboard
Last login: Sun Jul  7 20:33:06 2024 from 10.0.0.1
[root@linux ~]# tmux new -s share

然后,使用ssh服务将客户端B也连接到服务器,并执行获取远程会话的命令。接下来,两台主机就能看到相同的内容了:

[root@client ~]# ssh 10.0.0.2
Activate the web console with: systemctl enable --now cockpit.socket

Register this system with Red Hat Insights: insights-client --register
Create an account or view all your systems at https://red.ht/insights-dashboard
Last login: Sun Jul  7 20:33:06 2024 from 10.0.0.1
[root@linux B ~]# tmux attach-session -t share

四、检索日志信息

Linux拥有十分强大且灵活的日志系统,保存了几乎日常中所有的操作记录和服务运行状态,并且按照报错。警告、提示和其他等标注进行了分类,让运维人员可以根据所需信息进行检索;

常见的日志文件:

文件路径及命令 作用
/var/log/boot.log 系统开机自检事件及引导过程等信息
/var/log/lastlog 用户登录成功时间、终端名称及IP地址等信息
/var/log/btmp 记录登录失败的时间、终端名称及IP地址等信息
/var/log/messages 系统及各个服务的运行和报错时间
/var/log/secure 系统安全相关的信息
/var/log/wtmp 系统启动与关机等相关信息

从理论上讲,日志文件分为三种类型:

  • 系统日志:记录系统的运行情况和内核信息;
  • 用户日志:记录用户的访问信息,包含用户名、终端名称、时间、来源和执行过的操作等;
  • 程序日志:一般稍微大的服务都会保存一份与其同名的日志文件,记录着服务运行过程中各种事件的信息,每个服务程序自己有独立的日志文件,但是格式相差的比较大。

1、journalctl命令

journalctl命令用于检索和管理系统日志信息,语法:"journalctl 参数";常用按键以及作用:

参数 作用
-k 内核日志
-b 启动日志
-u 指定服务
-n 指定条数
-p 指定类型
-f 实时刷新(追踪日志)
--since 指定时间
--disk-usage 占用空间

示例:查看系统最后5条日志信息:

[root@linux ~]# journalctl -n 5
-- Logs begin at Sun 2024-07-07 19:10:55 CST, end at Sun 2024-07-07 21:10:06 CST. --
Jul 07 21:01:01 linux run-parts[34826]: (/etc/cron.hourly) finished 0anacron
Jul 07 21:09:08 linux cupsd[903]: REQUEST localhost - - "POST / HTTP/1.1" 200 183 Renew-Subscription successful-ok
Jul 07 21:10:06 linux systemd[1]: Starting system activity accounting tool...
Jul 07 21:10:06 linux systemd[1]: sysstat-collect.service: Succeeded.
Jul 07 21:10:06 linux systemd[1]: Started system activity accounting tool.

使用-f参数进行实时刷新最新内容;与之前学过的tail -f /var/log/messages命令效果一样:

[root@linux ~]# journalctl -f
-- Logs begin at Sun 2024-07-07 19:10:55 CST. --
Jul 07 21:00:06 linux systemd[1]: Started Session 12 of user root.
Jul 07 21:00:06 linux systemd-logind[858]: New session 12 of user root.
Jul 07 21:00:06 linux sshd[34747]: pam_unix(sshd:session): session opened for user root by (uid=0)
Jul 07 21:01:01 linux CROND[34817]: (root) CMD (run-parts /etc/cron.hourly)
Jul 07 21:01:01 linux run-parts[34820]: (/etc/cron.hourly) starting 0anacron
Jul 07 21:01:01 linux run-parts[34826]: (/etc/cron.hourly) finished 0anacron
Jul 07 21:09:08 linux cupsd[903]: REQUEST localhost - - "POST / HTTP/1.1" 200 183 Renew-Subscription successful-ok

在rsyslog服务程序中,日志根据重要程度被分为了九个等级:

日志等级 说明
emery 系统出现严重故障,内核崩溃等情况
alert 应立即修复的故障,数据库损坏等情况
crit 危险较高的故障,硬盘损坏导致程序运行失败的情况
err 一般危险的故障,某个服务启动或运行失败的情况
warning 警告信息,某个服务参数或功能错误的情况
notice 一般无危险的故障,只是需要处理的情况
info 通用性消息,给用户提示一些有用的信息
debug 调试程序所产生的信息
none 没有优先级,不做日志记录

如上表所示;只想看较高级别报错信息的话,用"-p"参数指定

[root@linux ~]# journalctl -p crit
-- Logs begin at Sun 2024-07-07 19:10:55 CST, end at Sun 2024-07-07 21:20:26 CST. --
Jul 07 19:10:56 localhost.localdomain kernel: Warning: Unmaintained hardware is detected:  e1000:100F:8086 @ 0000:02:01.0

还可以用"--since"参数按照今日(today),近N小时(hour),指定时间范围的格式进行检索,找到最近的日志数据:

1、仅查询今日的日志信息

[root@linux ~]# journalctl --since today
-- Logs begin at Sun 2024-07-07 19:10:55 CST, end at Sun 2024-07-07 21:20:26 CST. --
Jul 07 19:10:55 localhost.localdomain kernel: Linux version 4.18.0-513.5.1.el8_9.x86_64 (mockbuild@x86-64-01.build.eng.rdu2.redhat.com) (gcc version 8.5.0 20210514 (Red Hat 8.5.0-20) (GCC)) #1 SMP Fri Sep 29 >
Jul 07 19:10:55 localhost.localdomain kernel: Command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-4.18.0-513.

2、仅查询最近一小时的日志信息

[root@linux ~]# journalctl --since "-1 hour"
-- Logs begin at Sun 2024-07-07 19:10:55 CST, end at Sun 2024-07-07 21:20:26 CST. --
Jul 07 20:24:15 Server dbus-daemon[861]: [system] Activating via systemd: service name='net.reactivated.Fprint' unit='fprintd.service' requested by ':1.205' (uid=0 pid=2357 comm="/usr/bin/gnome-shell ")
Jul 07 20:24:16 Server systemd[1]: Starting Fingerprint Authentication Daemon...
Jul 07 20:24:16 Server dbus-daemon[861]: [system] Successfully activated service 'net.reactivated.Fprint'
Jul 07 20:24:16 Server systemd[1]: Started Fingerprint Authentication Daemon.

3、仅查询从上午8点整到10点整的日志信息

[root@linux ~]# journalctl --since "12:00" --until "14:00"
-- Logs begin at Sun 2024-07-07 19:10:55 CST, end at Sun 2024-07-07 21:20:26 CST. --

4、仅查询从2024年6月1日至7月1日的日志信息

[root@linux ~]# journalctl --since "2024-06-01" --until "2024-07-01"
-- Logs begin at Sun 2024-07-07 19:10:55 CST, end at Sun 2024-07-07 21:20:26 CST. --

5、查询指定服务的日志信息

[root@linux ~]# journalctl _SYSTEMD_UNIT=sshd.service
-- Logs begin at Sun 2024-07-07 19:10:55 CST, end at Sun 2024-07-07 21:20:26 CST. --
Jul 07 19:11:02 docker-2322030238 sshd[905]: Server listening on 0.0.0.0 port 22.
Jul 07 19:11:02 docker-2322030238 sshd[905]: Server listening on :: port 22.
Jul 07 19:12:27 docker-2322030238 sshd[2616]: Accepted password for root from 10.0.0.1 port 8776 ssh2
Jul 07 19:12:27 docker-2322030238 sshd[2616]: pam_unix(sshd:session): session opened for user root by (uid=0)

致谢

在此,我要对所有为知识共享做出贡献的个人和机构表示最深切的感谢。同时也感谢每一位花时间阅读这篇文章的读者,如果文章中有任何错误,欢迎留言指正。 

学习永无止境,让我们共同进步!!

相关推荐

  1. 如何远程SSH连接在家的服务器主机

    2024-07-09 23:24:03       41 阅读
  2. 使用标识符快捷登录远程SSH服务器

    2024-07-09 23:24:03       23 阅读
  3. vscode使用ssh连接远程服务器

    2024-07-09 23:24:03       15 阅读
  4. Vscode SSH使用服务器访问内网主机

    2024-07-09 23:24:03       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-09 23:24:03       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-09 23:24:03       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-09 23:24:03       57 阅读
  4. Python语言-面向对象

    2024-07-09 23:24:03       68 阅读

热门阅读

  1. c# 基础习题答案 20240709

    2024-07-09 23:24:03       18 阅读
  2. MAC下的PDM工具

    2024-07-09 23:24:03       22 阅读
  3. Dubbo源码解析-过滤器Filter

    2024-07-09 23:24:03       22 阅读
  4. 开源大模型对比

    2024-07-09 23:24:03       26 阅读
  5. Mongodb索引的删除

    2024-07-09 23:24:03       19 阅读
  6. ubuntu minio在线安装、开机启动

    2024-07-09 23:24:03       20 阅读
  7. 正则表达式-使用笔记

    2024-07-09 23:24:03       27 阅读
  8. TensorFlow 的基本概念和使用场景

    2024-07-09 23:24:03       20 阅读
  9. Perl 语言开发(七):哈希和关联数组

    2024-07-09 23:24:03       23 阅读
  10. Linux上web服务器搭建(Apache、Nginx)

    2024-07-09 23:24:03       18 阅读
  11. Apache tika 实现各种文档内容解析

    2024-07-09 23:24:03       30 阅读