Linux修改主机名需同步更新/etc/hostname、/etc/hosts并刷新内核参数,否则引发SSH异常、服务失败或解析错误;临时用sudo hostname new-hostname,永久推荐sudo hostnamectl set-hostname并手动修正/etc/hosts中对应条目。

Linux系统修改主机名不能只改/etc/hostname,还需同步更新/etc/hosts并刷新内核参数,否则可能导致SSH连接异常、服务启动失败或网络解析错误。
临时修改:仅当前会话生效
使用hostname命令可立即更改运行中的主机名,但重启后失效:
-
sudo hostname new-hostname(需root权限) - 验证:执行
hostname或uname -n查看结果
永久修改:适用于大多数发行版(systemd)
推荐使用hostnamectl命令,它会自动更新配置文件并通知系统:
sudo hostnamectl set-hostname new-hostname- 该命令会写入
/etc/hostname,并触发systemd重新加载 - 无需手动重启,新主机名在下次登录或部分服务重载后即生效
必须同步更新/etc/hosts
若旧主机名仍存在于/etc/hosts中(如127.0.1.1 old-hostname),会导致本地解析冲突:
- 用文本编辑器打开
sudo nano /etc/hosts - 找到含原主机名的行(通常在
127.0.1.1或127.0.0.1后),替换为新主机名 - 保存退出,建议保留
127.0.0.1 localhost不变
验证与排错
修改完成后检查三项是否一致:
-
hostname—— 显示当前内核主机名 -
cat /etc/hostname—— 查看持久化配置 -
grep $(hostname) /etc/hosts—— 确认hosts中存在对应映射 - 如SSH登录时提示“Could not resolve hostname”,大概率是
/etc/hosts未更新
不复杂但容易忽略。关键在于三处同步:内核参数、配置文件、本地解析表。


















