应优先使用chrony配置时间同步,因其启动快、适应网络不稳定;其次可选ntp;临时校准用ntpdate;同步前需确认时区为asia/shanghai且硬件时钟设为utc,并开放udp 123端口。

如果您在Linux服务器上发现系统时间与标准时间存在偏差,可能导致日志错乱、证书失效或分布式任务失败,则需立即配置时间同步服务。以下是针对NTP与Chrony两种主流方案的实战操作步骤:
一、使用NTP服务进行时间同步
NTP(Network Time Protocol)是传统且广泛兼容的时间同步协议,适用于长期在线、网络稳定的服务器环境。其通过层级式时间源结构逐级校准本地时钟。
1、安装ntp软件包:
CentOS/RHEL 7/8执行:yum -y install ntp;
Ubuntu/Debian执行:apt-get -y install ntp。
2、编辑主配置文件:vi /etc/ntp.conf,注释默认pool服务器行,添加国内可靠源:server ntp.aliyun.com iburst。
3、启动并启用服务:systemctl start ntpd && systemctl enable ntpd。
4、立即强制同步一次(跳过平滑调整):ntpd -gq,该命令会一次性校正大偏差时间后退出。
5、验证同步状态:ntpq -p,输出中出现*标记的远程服务器表示已成功同步。
二、使用Chrony替代NTP进行时间同步
Chrony专为不稳定性网络与间歇性连接场景优化,启动快、收敛快、对硬件时钟漂移适应性强,是RHEL 8/CentOS 8+及现代发行版的默认推荐方案。
1、安装chrony包:
CentOS/RHEL执行:yum -y install chrony;
Ubuntu/Debian执行:apt-get -y install chrony。
2、备份并编辑配置文件:cp /etc/chrony.conf /etc/chrony.conf.bak && vi /etc/chrony.conf,替换全部server行,例如:server time1.tencentyun.com iburst。
3、启用并重启服务:systemctl enable --now chronyd。
4、检查当前同步精度:chronyc tracking,重点关注Offset(当前偏差)与Skew(频率漂移估计)值。
5、手动触发一次即时校准(不等待后台守护进程):chronyc makestep。
三、临时手动同步时间(无需守护进程)
当仅需一次性校准、或无法启动NTP/Chrony服务时,可使用轻量级命令直接向NTP服务器请求时间并写入系统时钟,适用于维护窗口或调试阶段。
1、安装ntpdate工具(部分系统已弃用,仅作备用):yum install -y ntpdate 或 apt-get install -y ntpdate。
2、执行单次强制同步:ntpdate -s ntp.aliyun.com,-s参数将日志输出至syslog而非终端。
3、将当前系统时间写入硬件时钟(避免重启后丢失):hwclock --systohc。
四、验证系统时区与本地时间设置
时间同步生效的前提是系统时区配置正确,否则即使NTP校准成功,显示时间仍可能错误。需确保/etc/localtime指向正确的时区文件,并确认系统识别的时区名称无误。
1、查看当前时区:timedatectl status | grep "Time zone"。
2、列出可用时区:timedatectl list-timezones | grep -i shanghai。
3、设置为中国上海时区:timedatectl set-timezone Asia/Shanghai。
4、确认硬件时钟采用UTC还是本地时间:timedatectl | grep "RTC in local TZ";若为yes,建议改为UTC:timedatectl set-local-rtc 0。
五、检查防火墙是否放行NTP端口
NTP协议默认使用UDP 123端口通信,若服务器启用了firewalld或iptables,未放行该端口将导致同步请求被拦截,表现为ntpq -p无响应或chronyc sources显示offline。
1、对于firewalld(CentOS/RHEL):firewall-cmd --permanent --add-service=ntp && firewall-cmd --reload。
2、对于ufw(Ubuntu):ufw allow 123/udp。
3、验证端口可达性:nc -zuv ntp.aliyun.com 123,返回succeeded表示UDP通路正常。










