orangePi香橙派kunpengpro的openEuler 系统时间同步和远程连接
【摘要】 适用于:香橙派 Kunpeng Pro、openEuler 22.03 LTS-SP4(aarch64) 问题背景刚烧录的 openEuler 系统存在以下问题:时间偏差巨大(回到 1970.1.1 08:00),导致 TLS 证书校验失败,无法下载软件包缺少 NTP 自动校时配置,开机后时间不会自动同步需要安装 Tailscale 实现远程访问与组网 一键初始化脚本将以下脚本保存为 ini...
适用于:香橙派 Kunpeng Pro、openEuler 22.03 LTS-SP4(aarch64)
问题背景
刚烧录的 openEuler 系统存在以下问题:
- 时间偏差巨大(回到 1970.1.1 08:00),导致 TLS 证书校验失败,无法下载软件包
- 缺少 NTP 自动校时配置,开机后时间不会自动同步
- 需要安装 Tailscale 实现远程访问与组网
一键初始化脚本
将以下脚本保存为 init_openeuler.sh,赋予执行权限后运行:
#!/bin/bash
# openEuler 初始化脚本:时间同步 + Tailscale 安装
# 适用于 openEuler 22.03 LTS-SP4
set -e
echo "==> 步骤 1: 临时修正系统时间(避免 TLS 证书校验失败)"
timedatectl set-ntp false
timedatectl set-time "$(date -d '+8 hours' +'%Y-%m-%d %H:%M:%S' 2>/dev/null || echo '2025-11-04 10:00:00')"
timedatectl set-ntp true
echo "当前时间: $(date -Is)"
echo ""
echo "==> 步骤 2: 安装并配置 chrony(NTP 时间同步)"
if ! rpm -q chrony &>/dev/null; then
dnf -y install chrony
fi
# 备份原配置
test -f /etc/chrony.conf && cp -n /etc/chrony.conf /etc/chrony.conf.bak
# 添加关键配置(如果不存在)
grep -q "^makestep" /etc/chrony.conf || echo "makestep 1.0 3" >> /etc/chrony.conf
grep -q "aliyun.com" /etc/chrony.conf || echo "server ntp.aliyun.com iburst" >> /etc/chrony.conf
grep -q "cn.pool.ntp.org" /etc/chrony.conf || echo "pool cn.pool.ntp.org iburst" >> /etc/chrony.conf
# 启用并启动服务
systemctl enable --now chronyd
# 强制立即同步
sleep 2
chronyc -a makestep
echo ""
echo "==> 步骤 3: 验证时间同步状态"
chronyc tracking
timedatectl status | head -7
echo ""
echo "==> 步骤 4: 安装 Tailscale"
if ! command -v tailscale &>/dev/null; then
# 添加 Tailscale RHEL8 兼容源
curl -fsSL https://pkgs.tailscale.com/stable/rhel/8/tailscale.repo -o /etc/yum.repos.d/tailscale.repo
dnf -y install tailscale
fi
# 启用并启动 tailscaled
systemctl enable --now tailscaled
echo ""
echo "==> 步骤 5: 启动 Tailscale(需要浏览器认证)"
echo "请在浏览器中打开返回的 URL 完成设备认证:"
tailscale up --ssh
echo ""
echo "==> 初始化完成!"
echo ""
echo "服务状态检查:"
systemctl is-active chronyd tailscaled
systemctl is-enabled chronyd tailscaled
echo ""
echo "Tailscale 状态:"
tailscale status
echo ""
echo "============================"
echo "初始化成功!后续操作提示:"
echo "1. 时间同步:已配置开机自启,无需手动干预"
echo "2. Tailscale:已加入 Tailnet,可使用 Tailscale SSH 远程连接"
echo "3. 如需接受路由:tailscale up --ssh --accept-routes=true"
echo "============================"
使用方法
# 1. 上传或创建脚本
vi init_openeuler.sh
# 粘贴上述内容并保存
# 2. 赋予执行权限
chmod +x init_openeuler.sh
# 3. 以 root 身份运行
./init_openeuler.sh
手动逐步操作
1. 修正系统时间(避免证书校验失败)
# 临时关闭自动同步,手动设置近似时间,再重新开启
timedatectl set-ntp false
timedatectl set-time "2025-11-04 10:00:00" # 修改为当前实际日期时间
timedatectl set-ntp true
# 验证时间已更新
date -Is
原因:系统时间停留在 1970 年时,HTTPS 证书被判定为"尚未生效",导致 dnf install 失败。
2. 安装并配置 chrony
# 安装 chrony(如果未安装)
rpm -q chrony || dnf -y install chrony
# 备份原配置
cp -n /etc/chrony.conf /etc/chrony.conf.bak
# 添加快速跳变配置(开机时允许大幅调整时间)
grep -q "^makestep" /etc/chrony.conf || echo "makestep 1.0 3" >> /etc/chrony.conf
# 添加国内 NTP 源(提高同步速度)
grep -q "aliyun.com" /etc/chrony.conf || echo "server ntp.aliyun.com iburst" >> /etc/chrony.conf
grep -q "cn.pool.ntp.org" /etc/chrony.conf || echo "pool cn.pool.ntp.org iburst" >> /etc/chrony.conf
# 启用并启动服务
systemctl enable --now chronyd
# 立即强制同步
sleep 2
chronyc -a makestep
配置说明:
makestep 1.0 3:前 3 次更新允许时间跳变超过 1 秒(快速纠正大偏差)server ntp.aliyun.com iburst:使用阿里云 NTP 服务器(国内访问快)pool cn.pool.ntp.org iburst:使用中国 NTP 池(冗余备份)
3. 验证时间同步
# 查看同步状态(应显示 Leap status: Normal)
chronyc tracking
# 查看 NTP 源列表(* 表示当前使用的源)
chronyc sources -v
# 查看系统时间同步状态
timedatectl status
# 应显示:
# System clock synchronized: yes
# NTP service: active
4. 安装 Tailscale
# 添加 Tailscale RHEL8 源(openEuler 22.03 兼容 EL8)
curl -fsSL https://pkgs.tailscale.com/stable/rhel/8/tailscale.repo \
-o /etc/yum.repos.d/tailscale.repo
# 安装 Tailscale
dnf -y install tailscale
# 启用并启动服务
systemctl enable --now tailscaled
5. 启动并认证 Tailscale
# 启动 Tailscale 并开启内置 SSH
tailscale up --ssh
# 会输出类似:
# To authenticate, visit:
# https://login.tailscale.com/a/xxxxxxxxx
# 在浏览器中打开该 URL 完成设备认证
# 查看状态
tailscale status
验证与检查
验证服务状态
# 检查服务运行状态
systemctl is-active chronyd tailscaled
# 应输出:
# active
# 检查开机自启动
systemctl is-enabled chronyd tailscaled
# 应输出:
# enabled
验证时间同步
# 查看时间同步质量
chronyc tracking | grep -E "Reference|Stratum|Leap"
# Reference ID 应显示一个有效的 NTP 服务器 IP
# Stratum 应为 2-4(数字越小越准确)
# Leap status 应为 Normal
# 查看当前使用的 NTP 源(* 表示当前选择的源)
chronyc sources
验证 Tailscale
# 查看 Tailscale 连接状态
tailscale status
# 测试与其他节点的连接
tailscale ping <其他设备名或IP>
# 查看本机的 Tailscale IP
tailscale ip -4
常见问题与排错
问题 1:时间仍然不同步
# 检查 chronyd 日志
journalctl -u chronyd -f
# 手动强制同步
chronyc -a makestep
# 检查 NTP 源是否可达
chronyc sources -v
# 如果所有源都不可达(Reach 为 0),检查网络或防火墙
问题 2:Tailscale 安装失败
# 如果官方脚本无法识别 openEuler,使用手动方法:
curl -fsSL https://pkgs.tailscale.com/stable/rhel/8/tailscale.repo \
-o /etc/yum.repos.d/tailscale.repo
dnf -y install tailscale
# 或使用静态二进制文件:
curl -fsSL https://pkgs.tailscale.com/stable/tailscale_1.90.6_arm64.tgz -o /tmp/tailscale.tgz
tar -xzf /tmp/tailscale.tgz -C /usr/local/bin --strip-components=1
问题 3:Tailscale 认证 URL 无法访问
# 使用 Auth Key 替代浏览器认证:
# 1. 在 Tailscale 管理后台生成 Auth Key(可设置为可复用)
# 2. 使用 Auth Key 启动:
tailscale up --ssh --authkey=tskey-auth-xxxxxxxxxxxxxxxxxx
问题 4:设备无 RTC 电池,每次重启时间归零
已解决:chrony 配置了开机自启动和 makestep,会在启动后自动快速校时。
如需进一步优化:
# 确保 chronyd 在网络就绪后立即启动
systemctl edit chronyd
# 添加:
[Unit]
After=network-online.target
Wants=network-online.target
附录:配置文件参考
/etc/chrony.conf 关键配置
# 国内 NTP 源
server ntp.aliyun.com iburst
pool cn.pool.ntp.org iburst
# 开机快速跳变(前 3 次更新允许大幅调整)
makestep 1.0 3
# 其他默认配置...
driftfile /var/lib/chrony/drift
logdir /var/log/chrony
开机自启动验证
# 查看 chronyd 自启动状态
systemctl list-unit-files | grep chronyd
# 应显示:chronyd.service enabled
# 查看 tailscaled 自启动状态
systemctl list-unit-files | grep tailscaled
# 应显示:tailscaled.service enabled
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)