无法更改 Ubuntu 虚拟机上的主机名

无法更改 Ubuntu 虚拟机上的主机名

以下是我遵循的步骤:

  1. 更改/etc/hosts

    cat /etc/hosts
    
        127.0.0.1 localhost
        127.0.1.1 linux-vm
    
  2. 改变etc/hostname

    cat /etc/hostname
    
        linux-vm
    
  3. 重启

TTy 仍然显示旧主机名:

在此处输入图片描述

我怎样才能永久地改变它?

答案1

您可能还需要使用 systemd 方式更改主机名:

sudo hostnamectl --static set-hostname servername

此外,Ubuntu 还包含cloud-init在其后续发行版中,它提供了设置云实例的控制 - 包括设置主机名- 因此,即使您使用上述所有方法更改主机名,但重启后仍然无法生效,则值得检查是否安装了 cloud-init。如果安装了,您有两个选择 - 您可以禁用它(在进行上述主机名更改后):

 sudo touch /etc/cloud/cloud-init.disabled

或者您可以创建一个新的用户数据文件并重新加载配置 - 请参阅cloud-init 文档了解详情。

答案2

许多虚拟机主机每次重新启动时都会将您的 /etc/hostname 和 /etc/hosts 文件覆盖为其客户控制面板中配置的内容。

如果可以,请在 VPS 主机的控制面板中配置所需的主机名。

许多人使用的另一种选择(尽管有点黑客行为)是将这些文件标记为不可变的这意味着它们是真正只读的 (甚至由 root 执行)。

这是一个文件属性。Linux 文件系统允许许多文件属性,但很少使用。您可以使用命令(“更改属性”的缩写 - 与更改权限或更改所有权chattr相反)修改它们。chmodchown

将文件设置为不可变:

chattr +i filename

清除不可变标志:

chattr -i filename

这种方法在 OpenVZ 平台上是行之有效的,而这些平台最容易出现 /etc/hosts 重写问题。如果您有 Xen 或 KVM/Qemu 等机器级虚拟化,这种方法就不太可能奏效。

答案3

我现在测试了,除了按照您的步骤之外,我所做的如下:

sudo nano /etc/hostname
sudo nano /etc/hosts

我将主机从 更改cyrexcyrex2k并重新启动,然后得到:

cyrex@cyrex2k:~$ hostname
cyrex2k
cyrex@cyrex2k:~$ 

cyrex@cyrex2k:~$ cat /etc/hosts
127.0.0.1   localhost
127.0.1.1   cyrex2k

因此,我的建议是检查 IP 是否根据域名进行了验证,以防万一,同时添加您正在使用的虚拟环境。我在使用 VMware 时遇到过类似的问题,因此我改用 VirtualBox 和 QEMU(带 KVM)。

相关内容