Ubuntu主机名同步方法
要同步Ubuntu主机的主机名(即永久修改并确保各配置文件一致),需通过以下步骤操作:
hostnamectl
命令设置主机名(推荐)hostnamectl
是systemd提供的工具,可同时更新内核主机名、动态主机名及/etc/hostname
文件,无需重启即可生效(部分服务可能需要重启)。
sudo hostnamectl set-hostname new-hostname # 将"new-hostname"替换为目标主机名
/etc/hostname
文件/etc/hostname
是Ubuntu存储静态主机名的核心文件,需确保其内容与hostnamectl
设置的一致:
sudo nano /etc/hostname # 删除旧主机名,写入"new-hostname",保存退出
/etc/hosts
文件/etc/hosts
文件用于本地主机名解析,需将旧主机名替换为新主机名(避免网络服务无法识别):
sudo nano /etc/hosts # 找到"127.0.1.1"或"127.0.0.1"行,将旧主机名替换为"new-hostname"
# 示例:127.0.1.1 new-hostname
若系统使用networking
服务或NetworkManager,重启服务可使更改立即生效:
sudo systemctl restart networking # 适用于传统networking服务
# 或
sudo systemctl restart NetworkManager # 适用于NetworkManager
通过以下命令确认主机名已同步:
hostnamectl # 显示详细主机名信息(静态/动态/灵活主机名)
hostname # 仅显示当前主机名
若需在多台Ubuntu主机间同步主机名(如集群环境),可使用配置管理工具Ansible自动化操作,避免手动重复执行:
在控制节点(管理主机)上安装Ansible:
sudo apt update
sudo apt install ansible -y
新建sync_hostname.yml
文件,定义主机名同步任务:
---
- hosts: all # 目标主机组(需在ansible inventory文件中定义)
become: yes # 以root权限执行
tasks:
- name: Set new hostname
hostname:
name: new-hostname # 替换为目标主机名
notify:
- restart networking
handlers:
- name: restart networking
systemd:
name: networking
state: restarted
通过以下命令执行同步(需提前配置目标主机的SSH免密登录):
ansible-playbook sync_hostname.yml
sudo
或root权限。/etc/hostname
、/etc/hosts
及hostnamectl
显示的主机名完全一致,避免解析错误。