Chronyd 时间同步 + SSH 安全配置 + 计划任务(at/crontab)全解
Chronyd:RHEL8+ 默认时间同步工具,配置简单、精度高,服务端 + 客户端模式适配内网环境OpenSSH:生产环境必须用密钥认证,关闭密码登录、修改默认端口、限制 root 登录,提升安全计划任务:临时任务用at,周期性运维用crontab,系统任务优先放在目录这三大服务是 Linux 运维的基础,掌握配置与安全加固,能大幅提升服务器稳定性与运维效率。
在 RHEL/CentOS 系列服务器运维中,时间同步、安全远程登录、自动化计划任务是三大基础核心能力,直接决定服务器日志准确性、远程管理安全性与运维自动化效率。本文基于 RHEL9 官方规范,详细拆解 Chronyd 时间服务器、OpenSSH 安全配置、at 一次性任务 + crontab 周期性任务 的原理、配置与实战操作,新手也能直接照搬使用。
一、Chronyd 时间服务器(RHEL8+ 默认 NTP 实现)
1.1 为什么需要精准时间同步?
Linux 系统中,日志时间戳、数据库事务、集群通信、证书校验都依赖统一精准的系统时间。时间偏差会导致:
- 日志错乱,无法排查问题
- 集群节点通信失败
- 证书认证异常
- 备份 / 计划任务执行时间错误
从 RHEL8 开始,系统默认用 Chronyd 替代传统 ntpd 作为 NTP 协议实现,适配虚拟机、间歇性网络、温度波动等复杂场景,同步精度更高(局域网可达微秒级)。
1.2 Chronyd 核心组件
Chronyd 包含两个核心工具:
- chronyd:后台守护进程,负责时间同步、提供 NTP 服务
- chronyc:命令行工具,监控 chronyd 状态、临时修改配置(重启失效)
1.3 Chronyd 安装与服务管理
RHEL9 默认已安装 Chronyd,若未安装可手动部署:
# 安装 chrony
dnf install chrony -y
# 查看服务状态
systemctl status chronyd
# 开机自启 + 启动服务
systemctl enable --now chronyd
# 重启服务(配置修改后执行)
systemctl restart chronyd
1.4 chronyc 核心监控命令
(1)查看系统时间同步状态
chronyc tracking
关键字段:
Reference ID:当前同步的上级 NTP 服务器System time:系统时间与 NTP 时间的偏差Leap status:跳秒状态(Normal 为正常)
(2)查看 NTP 时间源
# 基础查看
chronyc sources
# 详细查看(带字段解释)
chronyc sources -v
字段标识:
^*:当前最优时间源^-:未选中的备用源
(3)查看时间源统计信息
chronyc sourcestats -v
1.5 Chronyd 服务端 + 客户端配置
(1)服务端配置(为内网客户端提供时间同步)
编辑配置文件 /etc/chrony.conf:
# 允许内网网段客户端同步时间(根据实际网段修改)
allow 192.168.0.0/16
# 开启日志记录
log measurements statistics tracking
重启服务 + 放行防火墙:
systemctl restart chronyd
# 测试环境可临时关闭防火墙
systemctl stop firewalld
(2)客户端配置(同步内网 Chronyd 服务端)
编辑配置文件 /etc/chrony.conf,注释默认公网 NTP 池,指向内网服务端:
# 注释默认公网源
# pool 2.rhel.pool.ntp.org iburst
# 指向内网 Chronyd 服务端
server 192.168.115.128 iburst
重启服务后,用 chronyc sources 验证同步状态。
二、OpenSSH 服务器(安全远程登录核心)
2.1 SSH 与 OpenSSH 基础
SSH(Secure Shell)是加密远程登录协议,替代明文传输的 Telnet/FTP,RHEL9 默认使用 OpenSSH 实现,仅支持更安全的 SSH2 协议。
核心组件:
sshd:SSH 服务端守护进程ssh:SSH 客户端工具scp/sftp:安全文件传输ssh-keygen:密钥生成工具ssh-copy-id:公钥分发工具
2.2 SSH 完整工作流程
- 版本协商:客户端与服务端确认使用 SSH2 协议
- 算法协商:协商加密、MAC、压缩算法
- 密钥交换:通过 DH 算法生成会话密钥,所有后续通信加密
- 身份认证:密码认证 / 密钥认证
- 会话交互:加密执行命令、传输文件
2.3 OpenSSH 服务管理
# 安装服务端(默认已装)
dnf install openssh-server -y
# 启动/开机自启
systemctl enable --now sshd
# 查看状态
systemctl status sshd
SSH 默认监听 22 端口,配置文件路径:/etc/ssh/sshd_config
2.4 SSH 核心配置(/etc/ssh/sshd_config)
# 监听端口(默认22,建议修改为非默认端口提升安全)
Port 22
# 监听所有网卡
ListenAddress 0.0.0.0
# 主机密钥文件
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
# 登录宽限时间(2分钟无操作断开)
LoginGraceTime 2m
# 最大认证尝试次数
MaxAuthTries 6
# 是否允许root远程登录(生产环境建议no)
PermitRootLogin prohibit-password
# 开启密码认证(密钥认证后可关闭)
PasswordAuthentication yes
# 允许登录用户白名单
AllowUsers redhat admin
# 关闭DNS反解(加速连接)
UseDNS no
修改配置后必须重启服务:systemctl restart sshd
2.5 密钥认证配置(免密登录,推荐)
(1)Linux → Linux 免密登录
# 1. 客户端生成密钥对(一路回车)
ssh-keygen
# 2. 公钥分发到服务端
ssh-copy-id root@192.168.115.128
# 3. 免密登录测试
ssh root@192.168.115.128
(2)Windows → Linux 免密登录
- Xshell 生成 RSA/Ed25519 密钥对
- 导出公钥,通过 rz 命令上传到 Linux
- 将公钥写入
~/.ssh/authorized_keys:
cat id_rsa_2048.pub >> ~/.ssh/authorized_keys
- Xshell 选择「Public Key」认证,直接登录
2.6 SSH 生产环境安全加固
-
禁用密码认证(仅允许密钥登录)
PasswordAuthentication no
systemctl restart sshd
-
修改默认 22 端口
Port 2222
# 配置SELinux放行新端口
semanage port -a -t ssh_port_t -p tcp 2222
# 防火墙放行
firewall-cmd --permanent --add-port=2222/tcp && firewall-cmd --reload
systemctl restart sshd
-
禁止 root 远程登录
PermitRootLogin no
-
设置登录用户白名单
AllowUsers redhat@192.168.1.0/24
2.7 Windows 原生 OpenSSH 使用
Windows 10/11 自带 OpenSSH,可直接用 PowerShell 操作:
# 安装 OpenSSH 服务端
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
# 启动 sshd 服务
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
# 生成密钥对
ssh-keygen -t ed25519
三、Linux 计划任务(一次性 at + 周期性 crontab)
Linux 计划任务分为两类:
- at 任务:一次性延迟执行,适合临时任务
- crontab 任务:周期性重复执行,适合日常自动化运维
3.1 一次性任务:at 命令
(1)at 服务管理
# 安装 at(默认已装)
dnf install at -y
# 启动并开机自启
systemctl enable --now atd
# 查看服务状态
systemctl status atd
(2)at 任务创建
语法:at 时间规格,输入命令后按 Ctrl+D 提交
# 3分钟后执行
at now +3 minutes
at> wall "3分钟后提醒"
at> <EOT> # Ctrl+D 提交
# 下午5点执行
at 17:00
at> echo "test" >> /tmp/test.txt
# 明天下午茶时间(16:00)
at teatime tomorrow
(3)at 任务管理
# 查看待执行任务
atq
# 查看任务详情
at -c 任务编号
# 删除任务
atrm 任务编号
(4)at 用户权限
/etc/at.allow:白名单(仅列表内用户可使用)/etc/at.deny:黑名单(列表内用户禁止使用)- 两个文件都不存在:仅 root 可使用
3.2 周期性任务:crontab
(1)crond 服务管理
# crontab 由 cronie 包提供,默认已装
systemctl enable --now crond
systemctl status crond
(2)用户级 crontab 命令
# 编辑当前用户任务(默认vim编辑器)
crontab -e
# 查看当前用户任务
crontab -l
# 删除当前用户所有任务
crontab -r
# root 管理其他用户任务
crontab -u redhat -e
(3)crontab 语法规则(5 个时间字段 + 命令)
分 时 日 月 周 命令
* * * * * command
字段说明:
*:任意时间*/n:每隔 n 单位x-y:范围x,y:列表
示例:
# 周一到周五 8:00-21:00 每2分钟写入日期到文件
*/2 8-21 * * 1-5 date >> /home/redhat/my_cron.txt
(4)系统级 crontab 配置
系统任务不建议用 crontab -e,推荐在 /etc/cron.d/ 下创建文件,多一个「执行用户」字段:
# 每天凌晨1点,root 用户执行备份
0 1 * * * root /opt/backup.sh
系统预设周期目录(直接放可执行脚本即可):
/etc/cron.hourly/:每小时执行/etc/cron.daily/:每天执行/etc/cron.weekly/:每周执行/etc/cron.monthly/:每月执行
(5)anacron 补跑机制
服务器关机 / 休眠时,crontab 会错过任务,anacron 会在系统开机后自动补跑错过的周期任务,配置文件:/etc/anacrontab
3.3 计划任务日志查看
所有计划任务执行日志都在:
tail -f /var/log/cron
四、总结
- Chronyd:RHEL8+ 默认时间同步工具,配置简单、精度高,服务端 + 客户端模式适配内网环境
- OpenSSH:生产环境必须用密钥认证,关闭密码登录、修改默认端口、限制 root 登录,提升安全
- 计划任务:临时任务用
at,周期性运维用crontab,系统任务优先放在/etc/cron.d/目录
这三大服务是 Linux 运维的基础,掌握配置与安全加固,能大幅提升服务器稳定性与运维效率。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)