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



查看主機名稱

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

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

linux-change-hostname

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

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

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