Linux加强篇009-使用ssh服务管理远程主机

本文涉及的产品
云服务器 ECS,u1 2核4GB 3个月
云服务器 ECS,每月免费额度200元 3个月
云服务器 ECS,u1 4核16GB 1个月
简介: 山重水复疑无路,柳暗花明又一村

一、前言

悟已往之不谏知来者之可追实迷途其未远觉今而昨非。舟遥遥以轻飏风飘飘而吹衣。问征夫以前路恨晨光之熹微

第一版我已经全部放到我的精选里了,大家可以点开我的头像主页,选择精选观看,本系列依照《Linux就该这么学》第二版随书学习练习操作,将一些课本上不顺畅的地方,全部以最简方式免费开源展示给大家,资源大家可以自行百度,学习起来我们既要多巴胺也要内啡肽。

这人啊,熬一天不累,熬十天就累了,小心一年不难,小心一辈子就难了,你任何的一个行为表态都会有很深远的影响,上班的几十年,大多数人走到一个位置,一个瓶颈也是如履薄冰,很难再有提升,如何突破呢,需要思考,需要学习,当然不是学linux,是学做人,学做事,学做没人敢做的事,有的事情,不上称没四两重,上了称一千斤都打不住,不要当显眼包,有了问题要顶住,运维就是这样一个职务,送上天王的一首《超人不会飞-周杰伦》保持谦逊,保持理智,随时找到人生的意义。

9.1 配置网卡服务

配置网卡的服务之前讲过了,但是没有讲过通过nmtui进行配置,今天我们来学习一下

9.1.1 配置网卡参数

使用nmtui命令来配置网络

[root@localhost ~]# nmtui

image.png

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

image.png

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

image.png

常见问题是没有激活网卡,网卡配置文件中的ONBOOT参数修改成yes,这样在系统重启后网卡就被激活,手动重启相应的服务,之后就可以看到网络畅通

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

NAME=ens160

UUID=a3e2d19b-0640-429b-8be8-6f4586ea29b1

DEVICE=ens160

ONBOOT=yes

IPADDR=192.168.227.10

NETMASK=255.255.255.0

GATEWAY=192.168.227.2

DNS1=192.168.227.1

DNS2=8.8.8.8

PREFIX=24

ZONE=public

重启网卡

[root@localhost ~]# nmcli connection reload ens160

[root@localhost ~]# nmcli connection up ens160

Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)

9.1.2 创建网络会话

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

[root@localhost ~]# nmcli connection show  

NAME    UUID                                  TYPE      DEVICE  

ens160  a3e2d19b-0640-429b-8be8-6f4586ea29b1  ethernet  ens160  

virbr0  e826a88f-50b2-4b11-9a9f-c2dcaed3e949  bridge    virbr0  

[root@localhost ~]# nmcli connection show ens160  

connection.id:                          ens160

connection.uuid:                        a3e2d19b-0640-429b-8be8-6f4586ea29b1

connection.stable-id:                   --

connection.type:                        802-3-ethernet

connection.interface-name:              ens160

使用nmcli命令并按照“connection add con-name type ifname”的格式来创建网络会话。可以实现公司网络和家庭网络自由切换,使用con-name参数指定公司所使用的网络会话名称company,然后依次用ifname参数指定本机的网卡名称,用autoconnect no参数将网络会话设置为默认不被自动激活,以及用ip4及gw4参数手动指定网络的IP地址:

[root@localhost ~]# nmcli connection add con-name company ifname ens160 autoconnect no type ethernet ip4 192.168.227.10/24 gw4 192.168.227.2

Connection 'company' (6358932d-c4cc-4b08-9a35-de9cea662065) successfully added.

使用con-name参数指定家庭所使用的网络会话名称house。因为要从外部DHCP服务器自动获得IP地址,所以这里不需要进行手动指定。

[root@localhost ~]# nmcli connection add con-name house type ethernet ifname ens160  

Connection 'house' (244e00ed-1631-4029-9da0-b1cd2e044352) successfully added.

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

[root@localhost ~]# nmcli connection show

NAME     UUID                                  TYPE      DEVICE  

ens160   a3e2d19b-0640-429b-8be8-6f4586ea29b1  ethernet  ens160  

virbr0   08428983-ade7-4567-b664-0e8ec4b89fd1  bridge    virbr0  

company  6358932d-c4cc-4b08-9a35-de9cea662065  ethernet  --      

house    244e00ed-1631-4029-9da0-b1cd2e044352  ethernet  --  

在成功创建网络会话后,可以使用nmcli命令查看创建的所有网络会话(把虚拟机系统的网卡(网络适配器)切换成NAT模式,重启虚拟机):

image.png

image.png

重启后再试,使用house会话:

image.png

使用company会话:

image.png

切换方式可以使用命令nmcli connection up house或者右上角选择切换:

image.png

后续不需要网络会话时,直接用delete命令就能删除:

[root@localhost ~]# nmcli connection delete house

Connection 'house' (244e00ed-1631-4029-9da0-b1cd2e044352) successfully deleted.

9.1.3 绑定两块网卡

生产环境必须提供7×24小时的网络传输服务。借助于网卡绑定技术,不仅能够提高网络传输速度,更重要的是,还可以确保在其中一块网卡出现故障时,依然可以正常提供网络服务。

在虚拟机系统中再添加一块网卡设备,请确保两块网卡都处在同一种网络连接模式中

image.png

处于相同模式的网卡设备才可以进行网卡绑定,否则这两块网卡无法互相传送数据。

image.png

1.创建出一个bond网卡

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

[root@localhost network-scripts]# nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=balance-rr"

Connection 'bond0' (433b5ce0-0cd3-44b2-9cd5-611d667cd7c9) successfully added.

其中rr是round-robin的缩写,全称为轮循模式。round-robin的特点是会根据设备顺序依次传输数据包,提供负载均衡的效果,让带宽的性能更好一些;而且一旦某个网卡发生故障,会马上切换到另外一台网卡设备上,保证网络传输不被中断。

2.向bond0添加从属网卡

[root@localhost ~]# ifconfig  

lo: flags=73  mtu 65536

       inet 127.0.0.1  netmask 255.0.0.0

       inet6 ::1  prefixlen 128  scopeid 0x10

       loop  txqueuelen 1000  (Local Loopback)

       RX packets 48  bytes 4160 (4.0 KiB)

       RX errors 0  dropped 0  overruns 0  frame 0

       TX packets 48  bytes 4160 (4.0 KiB)

       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099  mtu 1500

       inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255

       ether 52:54:00:74:ba:a6  txqueuelen 1000  (Ethernet)

       RX packets 0  bytes 0 (0.0 B)

       RX errors 0  dropped 0  overruns 0  frame 0

       TX packets 0  bytes 0 (0.0 B)

       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

此时我们重启之后发现网卡ip没了,这不要紧,我们继续查看一下相关网卡信息即可

[root@localhost ~]# ip a

1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

   inet 127.0.0.1/8 scope host lo

      valid_lft forever preferred_lft forever

   inet6 ::1/128 scope host  

      valid_lft forever preferred_lft forever

2: ens160:  mtu 1500 qdisc noop state DOWN group default qlen 1000

   link/ether 00:0c:29:ca:51:26 brd ff:ff:ff:ff:ff:ff

3: ens224:  mtu 1500 qdisc noop state DOWN group default qlen 1000

   link/ether 00:0c:29:ca:51:30 brd ff:ff:ff:ff:ff:ff

ifname参数后面接的是两块网卡的名称。大家一定要以真实的网卡名称为准

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

Connection 'bond0-port1' (d9ff2f24-31c4-4750-b554-bf813b333af3) successfully added.

[root@localhost ~]# nmcli connection add type ethernet slave-type bond con-name bond0-port2 ifname ens224 master bond0

Connection 'bond0-port2' (d68dcfed-6990-47ac-ab83-ac40206123c9) successfully added.

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

用nmcli命令依次配置网络的IP地址及子网掩码、网关、DNS、搜索域和手动配置等参数。

[root@localhost ~]# nmcli connection modify bond0 ipv4.addresses 192.168.227.10/24

[root@localhost ~]# nmcli connection modify bond0 ipv4.gateway 192.168.227.1

[root@localhost ~]# nmcli connection modify bond0 ipv4.dns 192.168.227.1

[root@localhost ~]# nmcli connection modify bond0 ipv4.method manual

[root@localhost ~]# nmcli connection up bond0

Error: Connection activation failed: Connection 'bond0' is not available on device bond0 because device is strictly unmanaged

这是没有默认开启,我们查一下是否开启

[root@localhost ~]# nmcli networking  

disabled

我们打开一下:

[root@localhost ~]# nmcli networking on

[root@localhost ~]# nmcli connection up bond0

Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)

查看状态:

[root@localhost ~]# nmcli device status

DEVICE      TYPE      STATE      CONNECTION  

ens160      ethernet  connected  ens160      

bond0       bond      connected  bond0        

ens224      ethernet  connected  bond0-port2  

virbr0      bridge    unmanaged  --          

lo          loopback  unmanaged  --          

virbr0-nic  tun       unmanaged  --

4.检验成果

当用户接下来访问主机IP地址192.168.227.10时,主机实际上是由两块网卡在共同提供服务。可以在本地主机执行ping 192.168.227.10命令检查网络的连通性。为了检验网卡绑定技术的自动备援功能,可以突然在虚拟机硬件配置中随机移除一块网卡设备,仅剩一块的时候,顺利被切换过去了,完全没受影响

image.png

9.2 远程控制服务

9.2.1 配置sshd服务

SSH(Secure Shell)是一种能够以安全的方式提供远程登录的协议,也是目前远程管理Linux系统的首选,使用SSH协议来远程管理Linux系统,则需要配置部署sshd服务程序。sshd是基于SSH协议开发的一款远程管理服务程序,不仅使用起来方便快捷,而且能够提供两种安全验证的方法:

基于密码的验证—用账户和密码来验证登录;

基于密钥的验证—需要在本地生成密钥对,然后把密钥对中的公钥上传至服务器,并与服务器中的公钥进行比较;该方式相较来说更安全。

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 当远程用户的私钥改变时直接拒绝连接
MaxAuthTries 6 最大密码尝试次数
MaxSessions 10 最大终端数
PasswordAuthentication yes 是否允许密码验证
PermitEmptyPasswords no 是否允许空密码登录(很不安全)

使用两台虚拟机,一台充当服务器,另外一台充当客户端

sshd服务实验机器简介

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

20ip地址不会配的可以看我之前的文章(网卡配置)我这把网卡配置文件内容展示一下(别全复制,重点内容我加粗了):

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=static

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

NAME=ens160

UUID=bc55b1a9-27b3-4c4a-94c2-8f2978e87ce1

DEVICE=ens160

ONBOOT=yes

IPADDR=192.168.227.20

NETMASK=255.255.255.0

GATEWAY=192.168.227.2

DNS1=192.168.227.1

DNS2=8.8.8.8

重启一下reboot

[root@localhost ~]# ifconfig  

ens160: flags=4163  mtu 1500

       inet 192.168.227.20  netmask 255.255.255.0  broadcast 192.168.227.255

我们可以通过ssh在客户端连到服务器

[root@localhost ~]# ssh 192.168.227.10

The authenticity of host '192.168.227.10 (192.168.227.10)' can't be established.

ECDSA key fingerprint is SHA256:Z1jN2qvmhrAMCwTTpLZhhifAZnZskoac+X849t7g7YI.

Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

使用Vim文本编辑器打开服务器上的sshd服务主配置文件,然后把第43行#PermitRootLogin yes参数前的井号(#)去掉,并把参数值yes改成no,这样就不再允许root管理员远程登录了

[root@localhost ~]# vim /etc/ssh/sshd_config  

42 #LoginGraceTime 2m

43 PermitRootLogin no

44 #StrictModes yes

手动重启并开机自启动

[root@localhost ~]# systemctl restart sshd

[root@localhost ~]# systemctl enable sshd

再次尝试通过root身份访问服务器

[root@localhost ~]# ssh 192.168.227.10

发现无法连接

Warning: Permanently added '192.168.227.10' (ECDSA) to the list of known hosts.

root@192.168.227.10: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

之后我们再恢复回来,继续其他实验

ssh关于xshell的连接这一部分我就不再多啰嗦了,直接上图,图里的指向是新建ssh窗口,相关22端口,相关ip地址,相关界面展示。

image.png

9.2.2 安全密钥验证

加密是对信息进行编码和解码的技术,它通过一定的算法(密钥)将原本能被直接阅读的明文信息转换成密文形式。密钥即是密文的钥匙,有私钥和公钥之分

第1步:在客户端主机中生成“密钥对”,记住是客户端(20)。

[root@localhost ~]# 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:7h3hLU0UHcTeJPCZFeMuQWTzXUOagynnkAKvopr5Jn4 root@localhost.localdomain

The key's randomart image is:

+---[RSA 3072]----+

|     .      +X+*+|

|      o   . =oX+*|

|       o + +.*+*.|

|      . . =.  = .|

|   . .  S .... . |

|  . .  . . =  .  |

| .      . + o    |

|oo.E   . . o     |

|==o     . .      |

+----[SHA256]-----+

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

[root@localhost ~]# ssh-copy-id 192.168.227.10

/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@192.168.227.10: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

上述是我的误区,因为我把服务器的密码登录给关闭了,所以导致第一次连接没达成,所以我得密钥也没传过去,这时候我们需要把服务端的vim /etc/ssh/sshd_config 中间的PasswordAuthentication no变更成yes

[root@localhost ~]# ssh-copy-id root@192.168.227.10

/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@192.168.227.10's password:  输入密码

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.227.10'"

and check to make sure that only the key(s) you wanted were added.

第3步:对服务器进行设置,使其只允许密钥验证,拒绝传统的密码验证方式。记得在修改配置文件后保存并重启sshd服务程序,再改成no

[root@localhost ~]# 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

[root@localhost ~]# systemctl restart sshd

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

[root@localhost ~]# ssh root@192.168.227.10

Activate the web console with: systemctl enable --now cockpit.socket

Last login: Mon Dec 11 19:53:29 2023 from 192.168.227.20

[root@localhost ~]# ifconfig  

bond0: flags=5187  mtu 1500

       inet 192.168.227.10  netmask 255.255.255.0  broadcast 192.168.227.255

用户没有密钥信息,即便有密码也会被拒绝,系统甚至不会给用户输入密码的机会

image.png

最后我们再改回去避免以后有问题

[root@localhost ~]# vim /etc/ssh/sshd_config  

67 # To disable tunneled clear text passwords, change to no here!

68 #PasswordAuthentication yes

69 #PermitEmptyPasswords no

70 PasswordAuthentication yes

[root@localhost ~]# systemctl restart sshd

9.2.3 远程传输命令

scp是一个基于SSH协议在网络之间进行安全传输的命令,其格式为“scp [参数]本地文件 远程账户@远程IP地址:远程目录”scp不仅能够通过网络传送数据,而且所有的数据都将进行加密处理。

 scp命令中可用参数及作用

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

使用scp命令把文件从本地复制到远程主机时,首先需要以绝对路径的形式写清本地文件的存放位置,添加参数-r进行递归操作。然后写上要传送到的远程主机的IP地址,远程服务器便会要求进行身份验证

[root@localhost ~]# echo "" > test

[root@localhost ~]# ll

-rw-r--r--. 1 root root    1 Dec 11 21:40 test

[root@localhost ~]# scp /root/test 192.168.227.20:/home

root@192.168.227.20's password:  

test                                                                                                                                    100%    1     0.8KB/s   00:00    

使用scp命令把远程服务器上的文件下载到本地主机,其命令格式为“scp [参数]远程用户@远程IP地址:远程文件 本地目录”。这样就无须先登录远程主机再进行文件传送

[root@localhost ~]# scp 192.168.227.20:/etc/redhat-release /root

root@192.168.227.20's password:  

redhat-release                                                                                                                          100%   30     1.3KB/s   00:00    

[root@localhost ~]# cat redhat-release  

CentOS Linux release 8.5.2111

9.3 不间断会话服务

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

会话恢复:即便网络中断,也可让会话随时恢复,确保用户不会失去对远程会话的控制。

多窗口:每个会话都是独立运行的,拥有各自独立的输入输出终端窗口,终端窗口内显示过的信息也将被分开隔离保存,以便下次使用时依然能看到之前的操作记录。

会话共享:当多个用户同时登录到远程服务器时,便可以使用会话共享功能让用户之间的输入输出信息共享。

在RHEL 8系统中,默认没有安装Tmux服务程序,因此需要配置软件仓库来安装

[root@localhost ~]# dnf install tmux -y

9.3.1 管理远程会话

直接敲击tmux命令进入会话窗口

image.png

会话窗口的底部出现了一个绿色的状态栏,里面分别显示的是会话编号、名称、主机名及系统时间

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

会话窗口的编号是从0开始自动排序(即0、1、2、3、……)接下来创建一个指定名称为backup的会话窗口

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

突然要去忙其他事情,但会话窗口中执行的进程还不能被中断,此时便可以用detach参数将会话隐藏到后台

[root@localhost ~]# tmux detach

[detached (from session backup)]

退回到主界面,但后台一直在,如果我们想查看可以用ls,想恢复回去可以用attach -t

[root@localhost ~]# tmux ls

backup: 1 windows (created Mon Dec 11 22:04:03 2023) [170x54]

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

不再需要使用这个Tmux会话了,也不用先在tmux命令后面添加attach,再执行exit命令退出

[root@localhost ~]# exit

[exited]

在日常的生产环境中,其实并不是必须先创建会话,然后再开始工作。可以直接使用tmux命令执行要运行的指令,这样命令中的一切操作都会被记录下来,当命令执行结束后,后台会话也会自动结束。

[root@localhost ~]# tmux new "vim test1"

[exited]

9.3.2 管理多窗格

在实际工作中,一个Shell终端窗口总是不够用,这怎么办呢?Tmux服务有个多窗格功能,能够把一个终端界面按照上下或左右进行切割,从而使得能同时做多件事情,而且之间互不打扰

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

image.png同时按下“Ctrl + B +方向键”调整窗格的尺寸,按住前俩键位,有节奏的按方向键可以一直调整

image.png

Tmux不间断会话多窗格切换命令

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

image.png  Tmux不间断会话多窗格互换命令

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

image.png

先同时按下Ctrl+B组合键,然后松手后再迅速按下其他后续按键,而不是一起按下,Tmux会话窗格相关的常用快捷键

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

image.png

9.3.3 会话共享功能

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

本机先连自己:ssh 192.168.227.10

[root@localhost ~]# tmux new -s share

客户端20连自己:ssh 192.168.227.10

[root@localhost ~]# tmux attach-session -t share

会有以下效果,100%同步

image.png

9.4 检索日志信息

在RHEL 8系统中,默认的日志服务程序是rsyslog。可以将rsyslog理解成之前的syslogd服务的增强版本,它更加注重日志的安全性和性能指标

 常见的日志文件保存路径

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

日志文件分为下面3种类型

系统日志:主要记录系统的运行情况和内核信息。

用户日志:主要记录用户的访问信息,包含用户名、终端名称、登入及退出时间、来源IP地址和执行过的操作等。

程序日志:稍微大一些的服务一般都会保存一份与其同名的日志文件,里面记录着服务运行过程中各种事件的信息;每个服务程序都有自己独立的日志文件,且格式相差较大。

journalctl命令用于检索和管理系统日志信息,语法格式为“journalctl参数”

 journalctl命令中常用按键以及作用

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

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

[root@localhost ~]# journalctl -n 5

-- Logs begin at Mon 2023-12-11 18:18:06 PST, end at Mon 2023-12-11 22:42:47 PST. --

Dec 11 22:42:47 localhost.localdomain sshd[7163]: Disconnected from user root 192.168.227.20 port 45568

Dec 11 22:42:47 localhost.localdomain sshd[7160]: pam_unix(sshd:session): session closed for user root

Dec 11 22:42:47 localhost.localdomain systemd[1]: session-8.scope: Succeeded.

Dec 11 22:42:47 localhost.localdomain systemd-logind[1034]: Session 8 logged out. Waiting for processes to exit.

Dec 11 22:42:47 localhost.localdomain systemd-logind[1034]: Removed session 8.

使用-f参数实时刷新日志的最新内容:

[root@localhost ~]# journalctl -f

-- Logs begin at Mon 2023-12-11 18:18:06 PST. --

Dec 11 22:34:45 localhost.localdomain sshd[7203]: Accepted password for root from 192.168.227.10 port 51218 ssh2

Dec 11 22:34:45 localhost.localdomain systemd-logind[1034]: New session 9 of user root.

Dec 11 22:34:45 localhost.localdomain systemd[1]: Started Session 9 of user root.

Dec 11 22:34:45 localhost.localdomain sshd[7203]: pam_unix(sshd:session): session opened for user root by (uid=0)

Dec 11 22:42:47 localhost.localdomain sshd[7163]: Received disconnect from 192.168.227.20 port 45568:11: disconnected by user

Dec 11 22:42:47 localhost.localdomain sshd[7163]: Disconnected from user root 192.168.227.20 port 45568

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

日志信息登记分类

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

看系统中较高级别的报错信息,可以在journalctl命令中用-p参数进行指定:

[root@localhost ~]# journalctl -p crit  

-- Logs begin at Mon 2023-12-11 18:18:06 PST, end at Mon 2023-12-11 22:42:47 PST. --

-- No entries --

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

仅查询今日的日志信息:

[root@localhost ~]# journalctl --since today

-- Logs begin at Mon 2023-12-11 18:18:06 PST, end at Mon 2023-12-11 22:42:47 PST. --

Dec 11 18:18:06 localhost.localdomain kernel: Linux version 4.18.0-348.7.1.el8_5.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 8.5.0 20210514 (Red Hat 8.5.0-4>

Dec 11 18:18:06 localhost.localdomain kernel: Command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-4.18.0-348.7.1.el8_5.x86_64 root=UUID=4b849a54-214d-437d-88ab-86d63bd77690 ro>

Dec 11 18:18:06 localhost.localdomain kernel: Disabled fast string operations

Dec 11 18:18:06 localhost.localdomain kernel: x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'

Dec 11 18:18:06 localhost.localdomain kernel: x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'

查询最近1小时的日志信息:

[root@localhost ~]# journalctl --since "-1 hour"

-- Logs begin at Mon 2023-12-11 18:18:06 PST, end at Mon 2023-12-11 22:42:47 PST. --

Dec 11 21:48:39 localhost.localdomain NetworkManager[1119]:   [1702360119.5087] dhcp4 (ens160): state changed extended -> extended, address=192.168.227.128

Dec 11 21:48:39 localhost.localdomain dbus-daemon[941]: [system] Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus-org.freedesktop.nm-dispa>

Dec 11 21:48:39 localhost.localdomain systemd[1]: Starting Network Manager Script Dispatcher Service...

Dec 11 21:48:39 localhost.localdomain dbus-daemon[941]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'

Dec 11 21:48:39 localhost.localdomain systemd[1]: Started Network Manager Script Dispatcher Service.

查询12点整到14点整的日志信息(年月日用横杠2023-12-01):

[root@localhost ~]# journalctl --since "12:00" --until "14:00"

-- Logs begin at Mon 2023-12-11 18:18:06 PST, end at Mon 2023-12-11 22:42:47 PST. --

具体某项服务的日志信息,可以使用_SYSTEMD_UNIT参数进行查询,服务名称的后面要有“.service”

[root@localhost ~]# journalctl -u sshd.service  

-- Logs begin at Mon 2023-12-11 18:18:06 PST, end at Mon 2023-12-11 22:48:50 PST. --

Dec 11 18:18:36 localhost.localdomain systemd[1]: Starting OpenSSH server daemon...

Dec 11 18:18:36 localhost.localdomain sshd[1131]: Server listening on 0.0.0.0 port 22.

Dec 11 18:18:36 localhost.localdomain sshd[1131]: Server listening on :: port 22.

Dec 11 18:18:36 localhost.localdomain systemd[1]: Started OpenSSH server daemon.

二、巩固练习

1.在Linux系统中多种方法可以配置网络参数的命令。

答:配置网络参数可以使用nmtui命令、nmcli命令、nm-connection-editor命令或者直接编辑网络配置文件来实现对网络参数的修改。

2.在RHEL 8系统中使用网络会话技术的目的是什么?

答:使用nmcli命令来管理网络会话的目的是为了快速切换网络参数,以便适应不同的工作场景。

3.请简述网卡绑定技术balaner-rr模式的特点。

答:平时两块网卡均工作,且自动备援,无须交换机设备提供辅助支持。

4.在Linux系统中,当通过修改其配置文件中的参数来配置服务程序时,若想要让新配置的参数生效,还需要执行什么操作?

答:需要重新启动相关的服务程序,或让服务程序重新加载配置文件,或重启系统。

5.sshd服务的密码验证与密钥验证方式,哪个更安全?

答:一般情况下,密钥验证方式更加安全。若用户有更高的安全需求,还可以再对密钥文件进行密码加密,从而实现双重加密。

6. 想要把本地文件/root/out.txt传送到地址为192.168.227.20的远程主机的/home目录下,且本地主机与远程主机均为Linux系统,最为简便的传送方式是什么?

答:执行命令scp /root/out.txt root@192.168.227.20:/home,并在进行密码验证后即可开始传送。

7.Tmux服务程序能够让用户实现远程控制的不间断会话,即便网络发生中断也不丢失对远程主机的会话控制。那么,当想要恢复一个名为linux的会话窗口时,应该怎么做呢?

答:执行命令tmux attach -t linux即可恢复这个会话窗口。

三、跋文

如果想上手操作的同学们可以通过阿里云ecs服务器免费试用参与或低价购买专属于自己的服务器入口如下

入口一:新老同学免费试用

入口二:上云第一站

入口三:学生版超低价云服务器

入口四:云服务器专享特惠版

入口五:云服务器特惠1.5折起

入口七:阿里云最新活动中心

入口八:中小企业权益满减礼包

说明:最后的链接只是想方便大家免费试用产品和找到最佳优惠政策。

学习是一件需要投入的事情,无论是精力、金钱、时间,每天花费1小时,坚持一年,你也能成为行业里的大牛。

相关实践学习
ECS云服务器新手上路
本实验会自动创建一台ECS实例。首先,远程登陆ECS实例,并部署应用。然后,登陆管理控制台,并对这台ECS实例进行管理操作。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4天前
|
安全 Linux Shell
Linux中SSH命令介绍
Linux中SSH命令介绍
16 2
|
4天前
|
Java Linux
Linux上管理不同版本的 JDK
Linux上管理不同版本的 JDK
8 0
|
8天前
|
Linux
【Linux 基础】文件与目录管理
文件和目录的基本概念以及常用命令
27 11
|
2天前
|
Linux 网络安全 开发工具
Linux 管理远程会话 screen:掌握终端的多任务操作
`Linux screen` 命令让多任务管理变得更简单,尤其在SSH连接远程服务器时。创建新会话如`screen -S backup`,查看会话`screen -ls`,退出`exit`。高级功能包括直接在会话中运行命令,如`screen vim memo.txt`,会话共享以协同工作,以及通过`screen -r`或`-D -r`重新连接或强制恢复断开的会话。提高效率,确保任务不间断运行。
6 1
|
4天前
|
网络协议 Linux 网络安全
Linux配置SSH允许TCP转发
Linux配置SSH允许TCP转发
12 1
|
9天前
|
安全 Linux Shell
【Linux基础】SSH登录
安全外壳协议(Secure Shell Protocol,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。 SSH通过在网络中建立安全隧道来实现SSH客户端与服务器之间的连接。 SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。
21 6
|
9天前
|
Shell Linux 网络安全
Linux怎样在使用ssh 链接时就指定gcc 的版本
Linux怎样在使用ssh 链接时就指定gcc 的版本
19 7
|
9天前
|
关系型数据库 MySQL Linux
Linux下怎么快速部署MySQL服务,并使用
Linux下怎么快速部署MySQL服务,并使用
27 5
|
3天前
|
网络协议 Linux Shell
如何在 CentOS 中配置 SSH 服务的 TCP 端口转发
如何在 CentOS 中配置 SSH 服务的 TCP 端口转发
8 0
|
3天前
|
监控 网络协议 Linux
技术好文共享::Linux系统日志管理日志转储
技术好文共享::Linux系统日志管理日志转储