變更 AL2 執行個體的主機名稱 - Amazon Linux 2

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

變更 AL2 執行個體的主機名稱

當您在私有 VPC 中啟動執行個體時,Amazon EC2 會指派客體作業系統主機名稱。Amazon EC2 指派的主機名稱類型取決於您的子網路設定。如需 EC2 主機名稱的詳細資訊,請參閱《Amazon EC2 使用者指南》中的 Amazon EC2 執行個體主機名稱類型Amazon EC2

設定為搭配使用 IP 型命名與 IPv4 地址之 EC2 執行個體的典型 Amazon EC2 私有 DNS 名稱,看起來會如同這樣:ip-12-34-56-78.us-west-2.compute.internal,其中名稱由內部網域、服務 (在此案例中為 compute)、區域,以及私有 IPv4 地址形式所組成。當您登入執行個體時,shell 提示中會顯示此主機名稱的一部分 (例如,ip-12-34-56-78)。每一次當您停止並重新啟動 Amazon EC2 執行個體時 (除非您使用彈性 IP 地址),公有 IPv4 地址便會變更,您的公有 DNS 名稱、系統主機名稱和 shell 提示也都會變更。

重要

此資訊適用於 Amazon Linux。如需其他分發的詳細資訊,請參閱其特定文件。

變更系統主機名稱

若您已為您執行個體的 IP 地址註冊公有 DNS 名稱 (例如 webserver.mydomain.com),您可以設定系統主機名稱,使您的執行個體將其自身識別為該網域的一部分。這也會變更 shell 提示,使其顯示此名稱的第一個部分,而不是由 提供的主機名稱 AWS (例如,ip-12-34-56-78)。若您沒有已註冊的公有 DNS 名稱,您仍然可以變更主機名稱,只是程序會有些不同。

為了讓您的主機名稱更新持續,必須確認 preserve_hostname 雲端初始化設定已設定為 true。您可以執行下列命令來編輯或新增此設定:

sudo vi /etc/cloud/cloud.cfg

如果未列出 preserve_hostname 設定,請將下列文字行新增至檔案結尾:

preserve_hostname: true
將系統主機名稱變更為公有 DNS 名稱

若您有已註冊的公有 DNS 名稱,請遵循此程序。

    • 對於 AL2:使用 hostnamectl命令來設定主機名稱,以反映完整網域名稱 (例如 webserver.mydomain.com)。

      [ec2-user ~]$ sudo hostnamectl set-hostname webserver.mydomain.com
    • 若為 Amazon Linux AMI:在您的執行個體上,在您喜愛的文字編輯器中開啟 /etc/sysconfig/network 組態檔案,然後變更 HOSTNAME 項目,使其反映完整的網域名稱 (例如 webserver.mydomain.com)。

      HOSTNAME=webserver.mydomain.com
  1. 重新開機執行個體來套用新的主機名稱。

    [ec2-user ~]$ sudo reboot

    或者,您可以使用 Amazon EC2 主控台 (在 Instances (執行個體) 頁面上,選取執行個體,並選取 Instance state (執行個體狀態)Reboot instance (重新啟動執行個體)),以重新開機。

  2. 登入您的執行個體,確認主機名稱已更新。您的提示現在應該會顯示新的主機名稱 (最多顯示到第一個 "."),而 hostname 命令應該會顯示完整的網域名稱。

    [ec2-user@webserver ~]$ hostname webserver.mydomain.com
不使用公有 DNS 名稱變更系統主機名稱
    • 對於 AL2:使用 hostnamectl命令來設定主機名稱,以反映所需的系統主機名稱 (例如 webserver)。

      [ec2-user ~]$ sudo hostnamectl set-hostname webserver.localdomain
    • 如為 Amazon Linux AMI:在您的執行個體上,使用您偏好的文字編輯器開啟 /etc/sysconfig/network 組態檔案,然後變更 HOSTNAME 項目,使其反映所需系統主機名稱 (例如 webserver)。

      HOSTNAME=webserver.localdomain
  1. 在您喜愛的文字編輯器中開啟 /etc/hosts 檔案,然後變更開頭為 127.0.0.1 的項目,使其反映以下的範例,並使用您自己的主機名稱取代。

    127.0.0.1 webserver.localdomain webserver localhost4 localhost4.localdomain4
  2. 重新開機執行個體來套用新的主機名稱。

    [ec2-user ~]$ sudo reboot

    或者,您可以使用 Amazon EC2 主控台 (在 Instances (執行個體) 頁面上,選取執行個體,並選取 Instance state (執行個體狀態)Reboot instance (重新啟動執行個體)),以重新開機。

  3. 登入您的執行個體,確認主機名稱已更新。您的提示現在應該會顯示新的主機名稱 (最多顯示到第一個 "."),而 hostname 命令應該會顯示完整的網域名稱。

    [ec2-user@webserver ~]$ hostname webserver.localdomain

您也可以實作更多程式設計解決方案,例如指定使用者資料來設定執行個體。如果您的執行個體是 Auto Scaling 群組的一部分,您可以使用 lifecycle hook 來定義使用者資料。如需詳細資訊,請參閱《AWS CloudFormation 使用者指南》中的啟動時在 Linux 執行個體上執行命令執行個體啟動時的 lifecycle hook

變更 Shell 提示而不影響主機名稱

如果您不想修改執行個體的主機名稱,但想要顯示比 提供的私有名稱更有用的系統名稱 (例如 webserver) AWS (例如 ip-12-34-56-78),您可以編輯 shell 提示組態檔案以顯示您的系統別名,而不是主機名稱。

將 shell 提示變更為主機別名
  1. /etc/profile.d 中建立一個檔案,並將稱為 NICKNAME 的環境變數設為您希望在 shell 提示中顯示的值。例如,若要將系統別名設為 webserver,請執行以下命令。

    [ec2-user ~]$ sudo sh -c 'echo "export NICKNAME=webserver" > /etc/profile.d/prompt.sh'
  2. 在您慣用的文字編輯器中 (例如 /etc/bashrc/etc/bash.bashrc) 開啟 vim (Red Hat) 或 nano (Debian/Ubuntu) 檔案。因為 sudo/etc/bashrc 的擁有者是 /etc/bash.bashrc,所以您需要搭配編輯器命令使用 root

  3. 編輯檔案,將 shell 提示變數 (PS1) 變更為顯示您的別名,而非主機名稱。尋找以下在 /etc/bashrc/etc/bash.bashrc 中設定 shell 提示的文字 (以下也會顯示上下幾行文字以供了解上下內容;請尋找開頭為 [ "$PS1" 的文字):

    # Turn on checkwinsize shopt -s checkwinsize [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ " # You might want to have e.g. tty in prompt (e.g. more virtual machines) # and console windows

    將該行中的 \h (hostname 的符號) 變更為 NICKNAME 變數的值。

    # Turn on checkwinsize shopt -s checkwinsize [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@$NICKNAME \W]\\$ " # You might want to have e.g. tty in prompt (e.g. more virtual machines) # and console windows
  4. (選用) 若要將 shell 視窗的標題設為新的別名,請完成以下步驟。

    1. 建立名為 /etc/sysconfig/bash-prompt-xterm 的檔案。

      [ec2-user ~]$ sudo touch /etc/sysconfig/bash-prompt-xterm
    2. 使用以下命令將檔案轉換成可執行檔。

      [ec2-user ~]$ sudo chmod +x /etc/sysconfig/bash-prompt-xterm
    3. 在您喜愛的文字編輯器 (例如 /etc/sysconfig/bash-prompt-xtermvim) 中開啟 nano 檔案。您需要使用 sudo 搭配編輯器命令,因為 /etc/sysconfig/bash-prompt-xterm 的擁有者是 root

    4. 為檔案新增下行。

      echo -ne "\033]0;${USER}@${NICKNAME}:${PWD/#$HOME/~}\007"
  5. 登出然後重新登入,以取得新的別名值。

在其他 Linux 發行版本上變更主機名稱

本頁面的程序僅適用於 Amazon Linux。如需其他 Linux 分佈的詳細資訊,請參閱其特定文件和以下文章: