首先確認當前主機名是否正確,使用以下任一命令:
hostname # 臨時主機名(重啟后失效)
hostnamectl # 永久主機名(顯示完整信息)
若顯示的主機名與預期不符,需繼續以下步驟調整。
若需快速修正(如測試環境),可使用以下命令臨時修改主機名:
sudo hostname new_hostname
將new_hostname替換為期望的主機名(如ubuntu-server)。此方法無需重啟,但重啟系統后會恢復原主機名。
若需永久生效,需修改系統配置文件并應用更改:
步驟1:編輯/etc/hostname文件
該文件存儲永久主機名,使用文本編輯器(如nano)打開并修改:
sudo nano /etc/hostname
刪除舊主機名,輸入新主機名(如ubuntu-pro),保存并退出(Ctrl+X→Y→Enter)。
步驟2:編輯/etc/hosts文件
該文件用于本地主機名解析,需將舊主機名替換為新主機名:
sudo nano /etc/hosts
找到包含舊主機名的行(通常為127.0.1.1 old_hostname或::1 old_hostname),將old_hostname替換為新主機名,保存并退出。
步驟3:應用新主機名
使用hostnamectl命令立即生效(無需重啟):
sudo hostnamectl set-hostname new_hostname
步驟4:重啟系統(可選但建議)
為確保所有服務識別新主機名,建議重啟:
sudo reboot
重啟后,通過hostnamectl命令驗證主機名是否生效。
cloud-init系統的額外修復(可選)若系統使用cloud-init(如云服務器),需禁用其主機名保留功能:
sudo nano /etc/cloud/cloud.cfg
找到preserve_hostname: true,將其修改為false,保存并退出。重啟系統使設置生效:
sudo reboot
此步驟可避免cloud-init下次啟動時覆蓋主機名。
若更改后仍無法生效,需檢查以下配置:
/etc/netplan/*.yaml中的主機名與實際一致(若有),修改后運行sudo netplan apply應用。/etc/resolv.conf中的DNS服務器是否正確(通常無需修改,除非有自定義DNS需求)。networking服務,運行sudo systemctl restart networking;若使用NetworkManager,運行sudo systemctl restart NetworkManager。-),避免空格、特殊字符或大寫字母。通過以上步驟,可解決Ubuntu系統中的主機名錯誤問題。若仍有疑問,可查看系統日志(journalctl -xe)獲取詳細錯誤信息,或參考Ubuntu官方文檔進一步排查。