一、chrony时间服务
1、Linux的两个时钟
硬件时钟:即BIOS时钟,也就是我们主板中用电池供电的时钟,是将时间写入到BIOS中,系统断电后时间不会丢失,可以在开机时通过主板程序中进行设置。
系统时钟:顾名思义也就是Linux系统内的时钟,是由Linux内核来提供的,系统时钟是基于内存,如果系统断电时间就会丢失。
2、NTP
-
NTP:(Network Time Protocol,网络时间协议)是由RFC 1305定义的时间同步协议,用来在分布式时间服务器和客户端之间进行时间同步。
-
NTP基于UDP报文进行传输,使用的UDP端口号为123。
-
NTP可以对网络内所有具有时钟的设备进行时钟同步,使网络内所有设备的时钟保持一致,从而使设备能够提供基于统一时间的多种应用,对于运行NTP的本地系统,既可以接受来自其他时钟源的同步,又可以作为时钟源同步其他的时钟,并且可以和其他设备互相同步。
-
NTP的其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以达到1-50ms。
3、chrony介绍
chrony是一个开源的自由软件,它能帮助你保持系统时钟与时钟服务器(NTP)同步,因此让你的时间保持精确。chrony由两个程序组成,分别是chronyd和chronyc。
(1)chronyd:是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿。
(2)chronyc:提供了一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。
注意:Chrony与NTP都是时间同步软件,两个软件不能够同时开启,会出现时间冲突,RHEL9中默认使用chrony作为时间服务器,不在支持NTP软件包。
4、安装与配置
[root@server ~]# yum install chrony -y
[root@server ~]# systemctl start chronyd
[root@server ~]# systemctl enable chronyd
[root@server ~]# systemctl status chronyd
5、chronyc sources输出分析
- M:这表示信号源的模式。^表示服务器,=表示对等方,#表示本地连接的参考时钟。
- S:此列指示源的状态
* | chronyd当前同步到的源 |
---|---|
+ | 表示可接受的信号源,与选定的信号源组合在一起 |
- | 表示被合并算法排除的可接受源 |
? | 表示已失去连接的源 |
x | 表示chronyd认为是虚假行情的时钟(即,其时间与大多数其他来源不一致) |
~ | 表示时间似乎具有太多可变性的来源 |
- Name/IP address:显示服务器源的名称或IP地址。
- Stratum:表示源的层级,层级1表示本地连接的参考时钟,第2层表示通过第1层级计算机的时钟实现同步,依此类推。
- Poll:表示源轮询频率,以秒为单位,值是基数2的对数,例如值6表示每64秒进行一次测量,chronyd会根据当时的情况自动改变轮询频率。
- Reach:表示源的可达性的锁存值(八进制数值),该锁存值有8位,并在当接收或丢失一次时进行一次更新,值377表示最后八次传输都收到了有效的回复。
- LastRx:表示从源收到最近的一次的时间,通常是几秒钟,字母m,h,d或y分别表示分钟,小时,天或年。
- Last sample:表示本地时钟与上次测量时源的偏移量,方括号左侧的数字表示原始测量值,方括号右侧表示偏差值,+/-指示器后面的数字表示测量中的误差范围。正偏移表示本地时钟位于源时钟之前。
二、SSH远程登录
1、概念
远程连接服务器通过文字或图形接口方式来远程登录系统,可以让用户在远程终端前登录linux主机以取得可操作主机接口(shell),而登录后的操作感觉就像是坐在系统前面一样。
2、SSH工作过程
过程 | 说明 |
---|---|
版本号协商阶段 | SSH目前包括SSH1和SSH2两个版本,双方通过版本协商确定使用的版本 |
密钥和算法协商阶段 | SSH支持多种加密算法,双方根据本端和对端支持的算法,协商出最终使用的算法 |
认证阶段 | SSH客户端向服务器端发起认证请求,服务器端对客户端进行认证 |
会话请求阶段 | 认证通过后,客户端向服务器端发送会话请求 |
交互会话阶段 | 会话请求通过后,服务器端和客户端进行信息的交互 |
3、SSH服务配置
(1)安装SSH
[root@server ~]# yum install openssh-server
(2)SSH实验
- 配置ssh监听端口号
- 第一步:server端操作,编辑配置文件
[root@server ~]# vim /etc/ssh/sshd_config # 修改第21行参数,去掉#,port值改为2222
- 第二步:server端操作,重启服务
[root@server ~]# systemctl restart sshd
[root@server ~]# netstat -ntlp # 查看端口号是否改变
- 第三步:node1端操作,ssh登录服务器
[root@node1 ~]# ssh root@192.168.48.130 # 默认登录会被拒绝
ssh: connect to host 192.168.48.130 port 22: Connection refused[root@node1 ~]# ssh -p 2222 root@192.168.48.130 # 指明以2222端口号登录
root@192.168.48.130's password:
[root@server ~]#
按ctrl+d注销
Connection to 192.168.48.130 closed.
[root@node1 ~]#
- 注意:修改ssh端口号时必须关闭selinux
# 定位server端,修改会原来的22端口
[root@server ~]# vim /etc/ssh/sshd_config
Port 22 # 修改第21行参数,去掉#,改为22
[root@server ~]# systemctl restart sshd
[root@server ~]# netstat -ntlp# 开启selinux
[root@server ~]# vim /etc/selinux/config
SELINUX=enforcing # 改为enforcing即开启
[root@server ~]# reboot # 重启生效,等待
[root@server ~]# vim /etc/ssh/sshd_config # 重新修改端口号为3333
Port 3333# 重启服务后会报错,selinux会拦截端口号修改
[root@server ~]# systemctl restart sshd
Job for sshd.service failed because the control process exited with error code.
See "systemctl status sshd.service" and "journalctl -xeu sshd.service" for details.[root@server ~]# setenforce 0 # 临时关闭selinux
[root@server ~]# getenforce # 查看selinux状态
Permissive # 临时关闭,不拦截但会记录行为[root@server ~]# systemctl restart sshd # 临时关闭selinux后重启服务成功
# 注意:修改端口这类的系统参数,需要关闭selinux或配置selinux让其放行