本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
更改您的 AL2 实例的主机名
当您在私有 VPC 中启动实例时,Amazon 会 EC2 分配一个访客操作系统主机名。Amazon EC2 分配的主机名类型取决于您的子网设置。有关 EC2 主机名的更多信息,请参阅亚马逊 EC2 用户指南中的亚马逊 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 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-hostnamewebserver.mydomain.com -
对于 Amazon Linux AMI:在您的实例上,使用常用的文本编辑器打开
/etc/sysconfig/network配置文件,更改HOSTNAME条目以反映完全限定域名(例如webserver.mydomain.com)。HOSTNAME=webserver.mydomain.com
-
-
重启实例以接受新主机名。
[ec2-user ~]$sudo reboot或者,您可以使用 Amazon EC2 控制台重启(在实例页面上,选择实例并选择实例状态、重启实例)。
-
登录实例,验证主机名是否已更新。提示符应显示新主机名(直到第一个“.”),hostname 命令应显示完全限定域名。
[ec2-user@webserver ~]$hostnamewebserver.mydomain.com
在无公用 DNS 名称的情况下更改系统主机名
-
-
对于 AL2:使用hostnamectl命令设置您的主机名以反映所需的系统主机名(例如
webserver)。[ec2-user ~]$sudo hostnamectl set-hostnamewebserver.localdomain -
对于 Amazon Linux AMI:在您的实例上,使用常用的文本编辑器打开
/etc/sysconfig/network配置文件,更改HOSTNAME条目以反映所需的系统主机名(例如webserver)。HOSTNAME=webserver.localdomain
-
-
在您常用的文本编辑器中打开
/etc/hosts文件,更改以127.0.0.1开始的条目,以匹配以下示例,替换为您自己的主机名。127.0.0.1webserver.localdomainwebserverlocalhost4 localhost4.localdomain4 -
重启实例以接受新主机名。
[ec2-user ~]$sudo reboot或者,您可以使用 Amazon EC2 控制台重启(在实例页面上,选择实例并选择实例状态、重启实例)。
-
登录实例,验证主机名是否已更新。提示符应显示新主机名(直到第一个“.”),hostname 命令应显示完全限定域名。
[ec2-user@webserver ~]$hostnamewebserver.localdomain
您还可以实施更多的编程解决方案,例如指定用户数据以配置您的实例。如果您的实例是自动扩缩组的一部分,您可以使用生命周期挂钩定义用户数据。有关更多信息,请参阅《AWS CloudFormation 用户指南》中的启动时在 Linux 实例上运行命令和用于实例启动的生命周期挂钩。
在不影响主机名的情况下更改 Shell 提示符
如果您不想修改实例的主机名,但希望显示比提供的私有名称(例如webserver)更有用的系统名称 AWS (例如ip-12-34-56-78),则可以编辑 shell 提示符配置文件以显示您的系统昵称而不是主机名。
将 Shell 提示符更改为主机别名
-
在
/etc/profile.d中创建一个文件,用于将称为NICKNAME的环境变量设置为要在 Shell 提示符中显示的值。例如,若要将系统别名设置为webserver,请运行以下命令。[ec2-user ~]$sudo sh -c 'echo "export NICKNAME=webserver" > /etc/profile.d/prompt.sh' -
使用您常用的文本编辑器(例如
/etc/bashrc或/etc/bash.bashrc)打开 vim (Red Hat) 或 nano (Debian/Ubuntu) 文件。您需要在编辑器命令中使用 sudo,因为/etc/bashrc和/etc/bash.bashrc归root所有。 -
编辑文件,将 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 -
(可选) 要将 Shell 窗口上的标题设置为新别名,请完成以下步骤。
-
创建一个名为的文件
/etc/sysconfig/bash-prompt-xterm。[ec2-user ~]$sudo touch /etc/sysconfig/bash-prompt-xterm -
使用以下命令使该文件可执行。
[ec2-user ~]$sudo chmod +x /etc/sysconfig/bash-prompt-xterm -
在您常用的文本编辑器(如 nano 或 vim)中打开
/etc/sysconfig/bash-prompt-xterm文件。您需要在编辑器命令中使用 sudo,因为/etc/sysconfig/bash-prompt-xterm归root所有。 -
将以下行添加到该文件。
echo -ne "\033]0;${USER}@${NICKNAME}:${PWD/#$HOME/~}\007"
-
-
注销,再重新登录,以接受新别名值。
在其他 Linux 发行版上更改主机名
此页面上的过程仅适用于 Amazon Linux。有关其他 Linux 发行版的更多信息,请参阅其特定文档和下列文章: