Amazon Linux インスタンスのホスト名の変更
プライベート VPC 内でインスタンスを起動すると、Amazon EC2 によってゲスト OS ホスト名が割り当てられます。Amazon EC2 によって割り当てられるホスト名のタイプは、サブネット設定によって異なります。EC2 ホスト名の詳細については、「Amazon EC2 インスタンスのホスト名のタイプ」を参照してください。
IPv4 アドレスで IP ベースの命名を使用するように構成された EC2 インスタンスの典型的な Amazon EC2 のプライベート DNS 名は、ip-12-34-56-78.us-west-2.compute.internal
のような形式になります。この名前は内部ドメイン、サービス (この例では、compute
)、リージョン、そしてプライベート IPv4 アドレスで構成されます。インスタンスにログインしたとき、このホスト名の一部がシェルプロンプトで表示されます (ip-12-34-56-78
など)。Amazon EC2 インスタンスを停止し、再起動するたびに (Elastic IP アドレスを使用していない限り)、パブリック IPv4 アドレスが変わり、パブリック DNS 名、システムホスト名、シェルプロンプトも変わります。
重要
この情報は、Amazon Linux に適用されます。その他のディストリビューションの情報については、各ドキュメントを参照してください。
システムホスト名の変更
インスタンスの IP アドレスにパブリック DNS 名を登録している場合 (webserver.mydomain.com
など)、インスタンスがそのドメインに含まれているものとして識別されるように、システムホスト名を設定できます。また、システムホスト名を変更すると、シェルプロンプトも変更され、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 名を登録している場合、この手順を行います。
-
-
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
-
-
インスタンスを再起動し、新しいホスト名を取得します。
[ec2-user ~]$
sudo reboot
または、Amazon EC2 コンソールを使用して再起動することもできます ([Instances (インスタンス)] ページでインスタンスを選択し、[Instance state (インスタンスの状態)]、[Reboot instance (インスタンスの再起動)] の順に選択します)。
-
インスタンスにログインして、ホスト名が更新されていることを確認します。メッセージには、新しいホスト名が表示されるはずです (最初の「.」まで)。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
-
-
お好みのテキストエディタで
/etc/hosts
ファイルを開き、下の例と一致する127.0.0.1
で始まるエントリを変更します。ホスト名は自分のホスト名に置換します。127.0.0.1
webserver
.localdomainwebserver
localhost4 localhost4.localdomain4 -
インスタンスを再起動し、新しいホスト名を取得します。
[ec2-user ~]$
sudo reboot
または、Amazon EC2 コンソールを使用して再起動することもできます ([Instances (インスタンス)] ページでインスタンスを選択し、[Instance state (インスタンスの状態)]、[Reboot instance (インスタンスの再起動)] の順に選択します)。
-
インスタンスにログインして、ホスト名が更新されていることを確認します。メッセージには、新しいホスト名が表示されるはずです (最初の「.」まで)。hostname コマンドで完全修飾ドメイン名が表示されます。
[ec2-user@webserver ~]$
hostname
webserver.localdomain
また、ユーザーデータを指定してインスタンスを設定するなど、よりプログラム的なソリューションを実装することもできます。インスタンスが Auto Scaling グループの一部である場合、ライフサイクルフックを使用してユーザーデータを定義できます。詳細については、「AWS CloudFormation ユーザーガイド」の「Run commands on your Linux instance at launch」(起動時に Linux インスタンスでコマンドを実行する) および「Lifecycle hook for instance launch」(インスタンス起動のライフサイクルフック) を参照してください。
ホスト名に影響を与えずにシェルプロンプトを変更する
インスタンスのホスト名を変更せずに、AWS が提供するプライベート名 (webserver
など) よりも便利なシステム名 (ip-12-34-56-78
など) を表示させる場合、ホスト名の代わりにシステムニックネームを表示するようにシェルプロンプト設定ファイルを編集できます。
シェルプロンプトをホストニックネームに変更するには
-
/etc/profile.d
で、NICKNAME
と呼ばれる環境変数を設定するファイルを作成して、シェルプロンプトに表示する値を設定します。例えば、システムニックネームを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
が所有するためです。 -
ファイルを編集し、ホスト名の代わりにニックネームを表示するようにシェルプロンプト変数 (
PS1
) を変更します。/etc/bashrc
または/etc/bash.bashrc
でシェルプロンプトを設定する次の行を見つけます (以下には、コンテキストを示すため前後の行も表示されています。[ "$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 -
(オプション) シェルウィンドウのタイトルを新しいニックネームに設定するには、次の手順を完了します。
-
/etc/sysconfig/bash-prompt-xterm
という名前のファイルを作成します。[ec2-user ~]$
sudo touch /etc/sysconfig/bash-prompt-xterm
-
次のコマンドを使用して、ファイルを実行可能にします。
[ec2-user ~]$
sudo chmod +x /etc/sysconfig/bash-prompt-xterm
-
お好みのテキストエディタ (
/etc/sysconfig/bash-prompt-xterm
や vim など) で、nano ファイルを開きます。エディタのコマンドで sudo を使用する必要があります。/etc/sysconfig/bash-prompt-xterm
はroot
が所有するためです。 -
次の行をファイルに追加します。
echo -ne "\033]0;${USER}@${NICKNAME}:${PWD/#$HOME/~}\007"
-
-
ログアウトしてから再度ログインし、新しいニックネーム値を取得します。
他の Linux ディストリビューションのホスト名の変更
このページの手順は、Amazon Linux のみで使用するためのものです。他の Linux ディストリビューションの詳細については、各ドキュメントおよび次の記事を参照してください。