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

更改 Amazon Linux 实例的主机名

当您将实例启动到私有 VPC 中时,Amazon EC2 会分配一个来宾操作系统主机名。Amazon EC2 分配的主机名类型取决于您的子网设置。有关 EC2 主机名的更多信息,请参阅 Amazon EC2 实例主机名类型

配置为使用 IPv4 地址的基于 IP 的命名的 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 名称,请执行此过程。

    • 对于 Amazon Linux 2:使用 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 名称的情况下更改系统主机名
    • 对于 Amazon Linux 2:使用 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 发行版的更多信息,请参阅其特定文档和下列文章: