外观
3.2 时区、主机名与 SSH 基础设置
约 832 字
服务器初始化
本页对应「三、操作步骤」的 3.2,完成时区、主机名与 SSH 基础设置。返回上级:云服务器初始化配置说明。
前置条件
- 3.1 已完成,
timedatectl、hostnamectl与sshd命令均可用。 - 已按命名规范确定主机名,例如
axis-prod-01,并确认该名称在监控系统中未被占用。 - 本机已生成密钥对,公钥位于
~/.ssh/axis_ed25519.pub,私钥权限为 600。 - 已知当前 SSH 端口与云安全组放通范围,若需改端口须先放通新端口。
操作步骤
- 设置时区并启用 NTP 同步。时区决定日志时间戳的显示,NTP 决定时间戳是否可信,两者必须一起设置。
sudo timedatectl set-timezone Asia/Shanghai
sudo timedatectl set-ntp true
timedatectl- 设置主机名,并补充本机解析。缺少
127.0.1.1映射时,sudo 与部分服务会因反解失败而出现秒级延迟。
sudo hostnamectl set-hostname axis-prod-01
grep -q '127.0.1.1' /etc/hosts || echo '127.0.1.1 axis-prod-01' | sudo tee -a /etc/hosts
hostnamectl- 编辑
/etc/ssh/sshd_config,先只做基础收敛,保留密码认证以便 3.3 建立账号后再关闭。此时若直接关闭密码认证,本地又尚无 deploy 账号,会立即失去登录手段。
Port 22
PermitRootLogin prohibit-password
PubkeyAuthentication yes
PasswordAuthentication yes
MaxAuthTries 3
LoginGraceTime 30
ClientAliveInterval 300
ClientAliveCountMax 2- 校验语法并平滑重载。校验失败时不要重载,先修正配置文件;reload 不会中断现有连接,是这里唯一应使用的重载方式。
sudo sshd -t
sudo systemctl reload ssh
sudo systemctl status ssh --no-pager- 在本机写入连接别名,先把 User 设为 root,3.3 完成后再改为 deploy。统一别名后,后续文档中的连接命令不必重复参数。
cat >> ~/.ssh/config <<'EOF'
Host axis
HostName 203.0.113.10
User root
Port 22
IdentityFile ~/.ssh/axis_ed25519
ServerAliveInterval 60
EOF
chmod 600 ~/.ssh/config结果确认
timedatectl显示Time zone: Asia/Shanghai (CST, +0800)、System clock synchronized: yes、NTP service: active,三项缺一不可。hostnamectl中 Static hostname 为 axis-prod-01,cat /etc/hostname输出一致,说明写入的不是临时名称。sudo sshd -T输出包含permitrootlogin without-password、maxauthtries 3、clientaliveinterval 300,与配置文件一致。- 新开终端执行
ssh axis仍可登录,说明重载未破坏现有登录方式。 date与date -u的差值稳定为 8 小时,证明时区偏移正确。
注意事项
sshd -t通过只代表语法正确,不代表能登录。必须新开会话验证,禁止在当前会话重载后直接退出。- 启用 cloud-init 的镜像可能在每次启动重写主机名,需在
/etc/cloud/cloud.cfg中设置preserve_hostname: true,否则重启后名称会还原。 - 若修改 Port,须先在安全组与 ufw 放通新端口,再改 sshd,最后才关闭旧端口,三步顺序不能颠倒。
- 时区变更只影响新写入的日志时间,历史日志不回溯;不要把旧日志的时间按新时区重新解释。
- 客户端别名中的 User 字段在 3.3 之后要改为 deploy,忘记修改会继续以 root 登录,与最小权限原则冲突。
- 若服务器位于受限网络、无法直连外部 NTP,需在
/etc/chrony/chrony.conf中改为内网时间源,否则System clock synchronized会长期为 no。