更改您的 AL2 实例的主机名 - Amazon Linux 2
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

更改您的 AL2 实例的主机名

当您将实例启动到私有 VPC 中时,Amazon EC2 会分配一个来宾操作系统主机名。Amazon EC2 分配的主机名类型取决于您的子网设置。有关 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 提示符,使其显示此名称的第一部分,而不是由 Amazon (例如ip-12-34-56-78)提供的主机名。如果没有注册公用 DNS 名,还是可以更改主机名,但过程略有差异。

为使主机名持续更新,您必须确认 preserve_hostname cloud-init 设置已设为 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 控制台重启(在实例页面上,选择实例,然后依次选择实例状态重启实例)。

  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 控制台重启(在实例页面上,选择实例,然后依次选择实例状态重启实例)。

  3. 登录实例,验证主机名是否已更新。提示符应显示新主机名(直到第一个“.”),hostname 命令应显示完全限定域名。

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

您还可以实施更多的编程解决方案,例如指定用户数据以配置您的实例。如果您的实例是自动扩缩组的一部分,您可以使用生命周期挂钩定义用户数据。有关更多信息,请参阅《Amazon CloudFormation 用户指南》中的启动时在 Linux 实例上运行命令用于实例启动的生命周期挂钩

在不影响主机名的情况下更改 Shell 提示符

如果您不想修改实例的主机名,但希望显示比提供的私有名称(例如webserver)更有用的系统名称 Amazon (例如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.bashrcroot 所有。

  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. 在您常用的文本编辑器(如 nanovim)中打开 /etc/sysconfig/bash-prompt-xterm 文件。您需要在编辑器命令中使用 sudo,因为 /etc/sysconfig/bash-prompt-xtermroot 所有。

    4. 将以下行添加到该文件。

      echo -ne "\033]0;${USER}@${NICKNAME}:${PWD/#$HOME/~}\007"
  5. 注销,再重新登录,以接受新别名值。

在其他 Linux 发行版上更改主机名

此页面上的过程仅适用于 Amazon Linux。有关其他 Linux 发行版的更多信息,请参阅其特定文档和下列文章: