hostnamectl set-hostname 一行即可修改主机名并自动更新内核静态主机名及 /etc/hostname,但必须同步修改 /etc/hosts 中对应条目(如 127.0.1.1 行),否则 sudo、ssh 等服务会因无法解析主机名而报错。

hostnamectl set-hostname 一行就能改,但别只做这一步
直接用 sudo hostnamectl set-hostname new-name 就能生效,不用重启,也不用手动改 /etc/hostname —— 这个命令会自动覆盖它。但很多人改完发现 sudo 报错、SSH 登录提示异常、日志里还显示旧名,问题就出在没同步 /etc/hosts。
/etc/hosts 必须同步更新,否则服务会“认不出自己”
系统很多组件(比如 sudo、sshd、systemd-journald)启动时会调用 gethostname(),再查 /etc/hosts 做本地解析。如果里面还是旧名,就会报 Could not resolve hostname 或静默降级。
- 打开文件:
sudo nano /etc/hosts - 找这一行:
127.0.1.1 old-hostname(不是127.0.0.1 localhost) - 把
old-hostname替换成你刚设的新名,例如:127.0.1.1 new-name - 保存后无需重启服务,但建议新开终端验证
主机名命名有硬限制,错一个字符就写不进内核
hostnamectl 会校验输入,但错误信息很模糊。真正生效的静态主机名必须满足:
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
- 只含 ASCII 字母、数字、连字符(
-),不能以连字符开头或结尾 - 长度 1–63 字符,不能全数字
- 不能含下划线(
_)、点(.)或空格(除非用--pretty单独设) - 若想用域名格式(如
server01.example.com),确保 DNS 可解析,否则本地服务可能卡住
改完立刻验证,别等重启才发现问题
改完两步(hostnamectl + /etc/hosts)后,马上执行:
-
hostname→ 应输出新名 -
hostnamectl status | grep "Static hostname"→ 确认静态名已写入 - 新开终端,看提示符是否变成
user@new-name:~$ -
ping -c1 $(hostname)→ 能通说明/etc/hosts解析正常
最常被忽略的是 127.0.1.1 那行——它不是注释,是真实生效的本地映射,漏改等于白改。










