主機名稱(hostname)是人類用來識別電腦主機的名稱,在電腦網路中又稱為節點名稱(nodename)。就像是替寵物命名一樣,我們也可以替自己的電腦隨意地進行命名。在安裝Linux作業系統的時候,通常就會先指定好主機名稱,這個主機名稱在作業系統安裝完後是可以更改的,那麼要怎麼去更改它呢?



查看主機名稱

在學習怎麼去更改Linux作業系統的主機名稱之前,我們先來學學怎麼查看現有的Linux作業系統的主機名稱吧!

通常我們在登入Linux的Shell後,就會顯示出目前登入的使用者和登入的主機名稱了。如下圖:

linux-change-hostname

上圖所顯示的登入的使用者和登入的主機名稱的部份稱為「Prompt」也可以說它就是「命令提示字元」。這個「命令提示字元」的格式我們也是可以自訂的,只要修改PS1PS2PS3PS4這幾個環境變數即可,這部份不在本篇文章的討論範圍之內。

在終端機中輸入以下指令,也可以看到目前使用的主機名稱:

hostname

linux-change-hostname

主機名稱的格式

.來區分不同的「標籤」,每個標籤的長度在1~63個字元之間,可使用的字元為英文大小寫字母(但是不區分大小寫)、數字0到9和減號-,總長度最多可以有253個字元(包含區隔標籤的.,但不包含結尾的.)。

以下都是正確的主機名稱:

  • server
  • server.magiclen.org
  • server.magiclen.org.
  • magiclen-server

修改主機名稱

以下提供幾種修改主機名稱的方式。

編輯/etc/hostname

直接使用文字編輯器來編輯/etc/hostname設定檔。例如使用vim,指令如下:

sudo vim /etc/hostname

linux-change-hostname

使用hostname指令

hostname指令除了可以查看主機名稱之外,也可以用來修改主機名稱。

sudo hostname 新的主機名稱

使用hostnamectl指令

hostnamectl指令也可以用來修改主機名稱。用法如下:

sudo hostnamectl set-hostname 新的主機名稱

設定Cloud-Init

如果您的Linux作業系統是運行在虛擬機上,那麼它有可能會啟動「Cloud-Init」這項能夠自動部署虛擬機的服務。這個服務有可能會讓您的主機名稱無法在修改後的下次開機中保留。

使用以下指令來查看「Cloud-Init」這項服務是否存在且已經啟用。

sudo systemctl status cloud-init

linux-change-hostname

如果是的話,若要使用以上提供的方式來永久修改主機名稱,就必須使用文字編輯器去編輯「Cloud-Init」的設定檔/etc/cloud/cloud.cfg。例如使用vim,指令如下:

sudo vim /etc/cloud/cloud.cfg

preserve_hostname欄位改為true後存檔即可。

linux-change-hostname