之前老王都是使用的CentOS系统,最近开始接触Ubuntu系统。今天在腾讯云的VPS上面(Ubuntu 20.04系统)修改主机名(hostname)时,发现重启后主机名会还原,搜索了一下可能是/etc/cloud/cloud.cfg
文件导致的,在这里记录一下腾讯云Ubuntu 20.04系统永久修改主机名的正确方法。
本文全文转载自:https://cloud.tencent.com/developer/article/1649332
一、理解主机名
一个主机名就是在网络上标记一个设备的标签名称。在同一个网络中,你不应该有两台或者更多机器拥有同样的主机名。
在 Ubuntu 中,你可以使用hostnamectl
命令编辑系统主机名以及相关设置。这个工具识别三种不同的主机名:
static
- 传统主机名。它存储在/etc/hostname
文件中,并且可以被用户设置pretty
- 一个自由形态的 UTF8 主机名,用来代表用户。例如:Linuxize's desktop
。transient
- 由 kernel 维护的动态主机名。 在运行过程中,DHCP 或者 mDNS 服务器可以改变 transient 主机名。默认情况下,它和 static 主机名一模一样。
我们强烈推荐使用完整域名(FQDN)来设置static
和transient
名称,例如host.example.com
。
仅仅 root 或者有 sudo 权限的用户可以修改系统主机名。
二、显示当前主机名
想要查看当前主机名,运行hostnamectl
命令,不带任何参数:
hostnamectl
在这个例子中,当前主机名被设置为:ubuntu2004.localdomain
。
三、修改系统主机名
修改系统主机名是一个简单的过程,语法如下:
sudo hostnamectl set-hostname host.example.com
sudo hostnamectl set-hostname "Your Pretty HostName" --pretty
sudo hostnamectl set-hostname host.example.com --static
sudo hostnamectl set-hostname host.example.com --transient
例如,想要修改系统今天主机名到neptune.linuxize.com
,你可以使用下面的命令:
sudo hostnamectl set-hostname neptune.linuxize.com
你也可以设置 pretty 主机名:
sudo hostnamectl set-hostname "Linuxize's laptop" --pretty
hostnamectl
不产生任何输出。如果成功,返回0,否则,返回一个非0错误码。
静态主机名被存储在/etc/hostname
,并且 pretty 主机名被存储在/etc/machine-info
文件。
你不应该在同样的网络不同的机器上使用相同的主机名。
在大多数系统中,主机名在/etc/hosts
中被映射到127.0.0.1
。打开文件,并且修改旧的主机名到新的主机名。
127.0.0.1 localhost
127.0.0.1 neptune.linuxize.com
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
如果你在一个云实例上运行 Ubuntu,并且安装了cloud-init
软件包,你也可以编辑/etc/cloud/cloud.cfg
文件。这个软件包由云服务器厂商提供,通常默认被安装,并且它可以被用来处理云服务器实例的初始化。
如果文件存在于你的系统上,打开它:
sudo nano /etc/cloud/cloud.cfg
搜索preserve_hostname
,并且将值从false
修改到true
。
# This will cause the set+update hostname module to not operate (if true)
preserve_hostname: true
保存文件,并且关闭编辑器。
四、验证修改
想要验证主机名是否被完全修改,输入hostnamectl
命令:
hostnamectl
你的新主机名将会在终端上被打印出来。
Static hostname: neptune.linuxize.com
Pretty hostname: Linuxize's desktop
Icon name: computer-vm
Chassis: vm
Machine ID: a04e3543f3da460294926b7c41e87a0d
Boot ID: aa31b274703440dfb622ef2bd84c52cb
Virtualization: oracle
Operating System: Ubuntu 20.04 LTS
Kernel: Linux 5.4.0-26-generic
Architecture: x86-64
五、总结
我们已经向你展示如何很简单地在 Ubuntu 20.04 上修改主机名,并且不需要重启机器。
还有很多理由你需要修改主机名。最普遍的理由就是,主机名需要在实例创建的时候进行自动设置。