在使用Ubuntu系统的过程中,很多人会遇到需要更改主机名的情况,比如公司要求统一命名规范、搭建集群时需要区分不同节点,或者买来的二手设备还带着别人的名字。主机名说白了就是你这台电脑在网络上的“名字”,终端里@符号后面显示的那串字符就是它。今天这篇文章就把Ubuntu更改主机名的方法一次讲清楚,包括临时修改和永久修改,新手照着做就能搞定。
一、先看看当前的主机名是什么
动手改之前,先确认当前的主机名。打开终端,输入以下命令:
hostname
回车后会直接显示当前的主机名。也可以用更详细的命令:
hostnamectl
这个命令会列出静态主机名、图标主机名和内核主机名等信息,一般我们改的都是静态主机名。另外,终端提示符里@后面的部分就是主机名,但注意终端显示可能有缓存,改完主机名后需要重新打开终端才会更新显示。
二、临时更改主机名的方法
如果只是想临时测试一下,可以用hostname命令直接改:
sudo hostname 新主机名
比如想把主机名改成ubuntu-server,就输入:
sudo hostname ubuntu-server
这种方式改完立即生效,但有个明显的缺点:电脑一重启,主机名就会变回原来的。所以临时修改只适合测试场景,正式使用还是建议用下面的永久修改方法。
三、永久更改主机名的推荐方法
Ubuntu 16.04之后的版本都内置了systemctl工具,用它改主机名最简单,推荐大家用这种方式。命令如下:
sudo hostnamectl set-hostname 新主机名
举个例子,把主机名改成my-ubuntu:
sudo hostnamectl set-hostname my-ubuntu
执行完这条命令,主机名就已经永久生效了,重启电脑也不会丢失。可以再用hostname命令确认一下是否改成功。这里要注意主机名的命名规范:建议只用字母、数字、中划线,不要用中文、空格和下划线开头,避免某些服务解析出问题。
四、通过修改配置文件更改主机名
如果你喜欢直接编辑文件,也可以手动改配置文件,效果和上面一样。
第一步,编辑/etc/hostname文件:
sudo nano /etc/hostname
把文件里的旧主机名删掉,写入新主机名,保存退出。这个文件里只有一行内容,就是主机名本身。
第二步,编辑/etc/hosts文件:
sudo nano /etc/hosts
找到类似127.0.1.1 旧主机名的那一行,把旧主机名替换成新的。如果不改这个文件,用sudo命令时可能会报“无法解析主机”的警告,虽然不影响使用,但看着很别扭。
第三步,重启电脑让配置生效:
sudo reboot
重启后用hostname命令检查,主机名就变成新的了。也可以不重启,执行sudo systemctl restart systemd-hostnamed,再重新登录一次终端即可。
五、老版本Ubuntu的改法
如果你的Ubuntu版本比较老,比如14.04之前的版本,没有hostnamectl命令,那就只能用改配置文件的方式。方法就是上面第四节讲的:改/etc/hostname和/etc/hosts两个文件,然后重启。老版本没有systemd,所以也不能用systemctl重启主机名服务,直接重启电脑最稳妥。
六、修改主机名后sudo报错的解决办法
有些人改完主机名后发现,一用sudo就提示sudo: 无法解析主机,这基本都是因为/etc/hosts里的旧主机名没同步更新。解决办法很简单,编辑/etc/hosts,把127.0.1.1后面的主机名改成新的,保存后就不会再报错了。
七、几个常见问题提醒
第一,主机名不要随便用大写字母,虽然系统允许,但某些网络服务会区分大小写,容易踩坑,建议全部用小写。第二,如果是云服务器,改主机名前最好确认服务商是否有自己的管理机制,有些云平台重启后会自动恢复原主机名,需要在其控制台里同步修改。第三,如果这台机器加入了域环境或者有其他机器通过主机名访问它,改完主机名记得通知相关人员更新访问配置,避免连接失败。
总结
总的来说,Ubuntu更改主机名并不复杂,记住一条主线就行:用sudo hostnamectl set-hostname 新主机名这条命令永久修改,再顺手把/etc/hosts里的旧主机名同步改掉,基本就万事大吉了。临时修改用hostname命令,改文件的方式适合所有版本。改完后用hostname和hostnamectl检查确认,遇到sudo报错就检查hosts文件。掌握这几个步骤,以后不管是要给服务器改名还是给本地电脑重命名,都能轻松应对。
