距离上次更新本文已经过去了 262 天,文章部分内容可能已经过时,请注意甄别

今天想修改云主机的 hostname,但是腾讯云的控制台里面好像不能直接改这个名字。需要在 root 用户里面修改!

参考 修改服务器主机名称 - 腾讯云开发者社区 - 腾讯云

修改前:

plaintext
1
[muxue@VM-12-2-centos:~]$

image-20220513195000888

修改后:

plaintext
1
[muxue@bt-7274:~]$

image-20220513194914471

1. 查看当前的主机名称

plaintext
1
hostname

2. 临时修改主机名称

不建议使用,重启之后又会还原

bash
1
2
# hostname 主机名称
hostname XXX

3. 永久修改主机名称

警告:WSL2 中不能使用此办法修改主机名!!否则修改后会导致 WSL 主机暂时无法正常进入!(遇到此问题可以重启电脑,WSL 的主机名会自动重置)

bash
1
2
# hostnamectl set-hostname 主机名称
hostnamectl set-hostname XXX

4. 重启服务

重启后效果就出现了

plaintext
1
reboot

谢谢你,BT7274

在这里插入图片描述

5.WSL2 修改主机名

参考:WSL 修改 hostname_wsl 修改主机名 - CSDN 博客How to change the hostname of Ubuntu running in Windows WSL

如果想在不修改 windows 主机名的情况下,在 WSL 中修改主机名,可以使用 WSL 的配置文件。

plaintext
1
sudo vim /etc/wsl.conf

添加如下配置

plaintext
1
2
3
[network]
hostname = <hostname>
generateHosts = false

其中 hostname 修改为你想要的主机名,generateHosts 选项代表不自动生成 hosts 文件(我的理解是不要自动重置)。

随后修改 /etc/hosts 文件,默认情况下,该文件应该长下面这样

plaintext
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateHosts = false
127.0.0.1 localhost
127.0.1.1 my-old-hostname.localdomain my-old-hostname
192.168.0.138 host.docker.internal
192.168.0.138 gateway.docker.internal
127.0.0.1 kubernetes.docker.internal

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouter

你需要做的是将文件中 my-old-hostname 修改为你刚刚更新的新用户名,其他内容不动。在我的电脑上第一个 my-old-hostname 后面只有一个点,不带 localdomain

plaintext
1
127.0.1.1       new-hostname.localdomain      new-hostname

回到 windows 的命令行中重启 wsl 即可生效。

plaintext
1
wsl --shutdown 虚拟机名称

初次修改后我遇到了这个 sudo 切换的错误,这是因为你的 /etc/hosts 没有正常修改为新的 hostname,请检查修改是否正确。

plaintext
1
2
❯ sudo su -
sudo: unable to resolve host wsl-ubuntu: Name or service not known