在同步主机名到其他设备前,需先永久修改本机Ubuntu的主机名(否则同步无意义)。推荐使用hostnamectl
命令(适用于systemd系统,Ubuntu 16.04及以上版本均支持),步骤如下:
hostnamectl
输出会显示静态主机名(Static hostname,即永久主机名)、瞬态主机名等信息。old-hostname
替换为目标主机名(如ubuntu-server
):sudo hostnamectl set-hostname ubuntu-server
该命令会自动更新/etc/hostname
文件(系统启动时读取的主机名配置文件)。/etc/hosts
文件,将旧主机名替换为新主机名(通常修改127.0.1.1
或127.0.0.1
对应的条目):sudo nano /etc/hosts
示例修改(假设本机IP为192.168.1.100
):127.0.0.1 localhost
192.168.1.100 ubuntu-server
hostnamectl # 或 `hostname`
完成上述步骤后,本机Ubuntu的主机名已永久设置为ubuntu-server
,可作为同步的源主机名。
若仅需同步到少数几台设备,可通过SSH远程登录,重复本机的修改步骤:
192.168.1.101
,用户名为ubuntu
:ssh ubuntu@192.168.1.101
sudo hostnamectl set-hostname target-hostname # 替换为目标主机名
sudo nano /etc/hosts # 更新本地解析(同本机步骤3)
sudo reboot # 重启使更改生效
注:若目标设备未开启SSH服务,需先通过其他方式(如控制台)登录。
若需同步到多台设备(如服务器集群、局域网设备),可使用Ansible(自动化运维工具)批量执行主机名修改任务:
sudo apt update && sudo apt install ansible -y
inventory.ini
文件,列出所有目标设备的IP或主机名(示例):[ubuntu_servers]
192.168.1.101
192.168.1.102
192.168.1.103
sync_hostname.yml
文件,定义主机名修改任务(示例):---
- hosts: ubuntu_servers
become: yes # 需要root权限
tasks:
- name: Set new hostname
hostname:
name: "target-hostname" # 替换为目标主机名
ansible-playbook sync_hostname.yml
注:Ansible通过SSH连接目标设备,无需在目标设备上预先安装Ansible,适合大规模批量操作。
sudo
权限(root权限)。/etc/hosts
文件中包含彼此的主机名映射(避免依赖DNS)。通过上述方法,可实现Ubuntu主机名向其他设备的同步,满足单设备调整或批量管理的需求。