こんにちは。ナミレリです。AWSのEC2インスタンスを管理、運用している場合、複数のターミナルで複数のEC2インスタンスにログインしているという方もいると思います。
ApacheのconfigをEC2の複数インスタンスで同じ設定にしたり、そういった時に間違わないようにプロンプトにホスト名などを表示してわかりやすくしたいと思います。

この記事はこんな人にオススメ
- EC2インスタンスを立ち上げたけどまだまだ初心者の方
- 複数のEC2インスタンスを管理されている方
- 複数のEC2インスタンスにそれぞれのユーザーでログインし運用されている方
- プロンプトのホスト名変更したい方
ちなみに下記はデフォルトのEC2インスタンス(Amazon Linux)のデフォルトのプロンプトは下のような感じでユーザ名(ec2-user)の後に長いホスト名が表示されます。
この記事でわかること
- EC2インスタンス(Amazon Linux)でのホスト名の変更方法
- zsh(.zshrc)の設定方法
- PROMPTとRPROMPTの設定書式

下のスクリーンショットはこの記事で実現するプロンプトです。プロンプトの右がポイントでユーザ名とホスト名(aws_ec2としています)を表示しています。プロンプトの左はユーザ名とカレントディレクトリを表示しました。

目次
EC2(Amazon Linux)のホスト名を変更する
hostnamectlコマンドの使い方
EC2(Amazon Linux)のホスト名の変更方法はいくつかありますが、今回はhostnamectlコマンドを使って変更します。hostnamectlコマンドの使い方を下記に記載します。
sudo hostnamectl set-hostname [ホスト名]
上記のようにhostnamectlの後にset-hostnameでその後に設定したいホスト名を入力します。
変更の確認は下のようにhostnamectlで情報を表示します。
hostnamectl
ホスト名の事前確認
現在の設定の確認として、/etc/hostnameの内容とhostnamectlコマンドの結果を確認しましょう。どちらも現在のホスト名である「ip-xx-xx-x-x.ap-northeast-1.compute.internal」が表示されます。
実際にホスト名を変更する
では実際にホスト名を変更します。今回は「aws_ec2」というホスト名にします。
ホスト名の設定後の確認
設定後の確認として、/etc/hostnameの内容とhostnamectlコマンドの結果を確認しましょう。先程設定した「aws_ec2」になっています。
この後はzshをインストールして細かく設定していきます。
zshのインストールと設定
zshをインストールされていない場合は下記のコマンドでインストールします。
chshが使えるようにyumでutil-linux-userをインストールします。
自分のアカウントのログインシェルをzshにします。chshコマンドでログインシェルを変更します。
一旦ログアウトして再ログインします。再度ログインすると以下のようなメッセージが表示されます。0を入力すると空の.zshrcが作成されます。
qを入力:何もせずに終了。次回再度メッセージが表示される。
0を入力:空の.zshrcを作成する。
1を入力:対話形式で.zshrcを設定する。
今回は0を入力し、.zshrcをカスタマイズしていきます。
オススメ書籍:Linux+コマンド入門 ——シェルとコマンドライン、基本の力
プロンプトの設定
~/.zshrcでプロンプトを設定します。zshの細かい設定は奥が深いのでこの記事では触れませんが、今回の目的であるプロンプトにホスト名などを表示してわかりやすくしていきます。
すでにプロンプトは先程設定したホスト名が適用されて、[ユーザー名@aws_ec2]になっています。
現在のシェルとzshのバージョン確認
echo $SHELLとzsh --versionでzshになっていることを確認するとともに、zshのバージョンも確認しておきます。
.zshrcの設定
viで~/.zshrcを編集し、下記の2行を追加してみましょう。編集後、source ~/.zshrcで再読込します。
下記のようなプロンプトになります。それでは設定内容を細かく見ていきます。

設定の詳細
それでは先程設定した詳細を見ていきます。一見わかりにくい書式ですがこれがまた魅力のひとつですね。
PROMPT='%F{green}%m:%~ %B%F{1}❯%F{3}❯%F{2}❯%f%b '
RPROMPT='[%F{green}%n%F{blue}@%F{red}%m%f]'
左プロンプトと右プロンプト
PROMPTとRPROMPTの2行を定義しました。PROMPTは左プロンプト、RPROMPTは右プロンプトです。(下の青色マーカー部分)
PROMPT='%F{green}%m:%~ %B%F{1}❯%F{3}❯%F{2}❯%f%b '
RPROMPT='[%F{green}%n%F{blue}@%F{red}%m%f]'
色の指定
%Fと%fで囲んだ部分に色を指定することができます(下の赤色マーカー部分)。指定できる色は8色で、数字または色の名前で指定します。色の指定は{と}で囲みます。
PROMPT='%F{green}%m:%~ %B%F{1}❯%F{3}❯%F{2}❯%f%b '
RPROMPT='[%F{green}%n%F{blue}@%F{red}%m%f]'
色の名前 | 数字 |
---|---|
black | 0 |
red | 1 |
green | 2 |
yellow | 3 |
blue | 4 |
magenta | 5 |
cyan | 6 |
white | 7 |
%で始まる特殊な文字(Prompt Expansion)
%mはホスト名、%nはユーザ名など%で始まる便利な特殊な文字があります(下の黄色マーカー部分)。代表的なものを紹介していきます。
PROMPT='%F{green}%m:%~ %B%F{1}❯%F{3}❯%F{2}❯%f%b '
RPROMPT='[%F{green}%n%F{blue}@%F{red}%m%f]'
これまで紹介した色の指定やこれから紹介する%で始まる特殊な文字は、print -Pで確認することができます。どんな色になるのか、どんな情報が表示されるかを事前にprint -Pで確認できます。例えば下記のコマンドで確認できます。
特殊な文字 | 説明 | 表示例 |
---|---|---|
%# | 一般ユーザーの場合は%を表示 スーパーユーザーの場合は#を表示 | % # |
%m | ホスト名(短い)を表示 | hostname.exsample.com |
%M | ホスト名(長い)を表示 | hostname |
%~ | 現在いるカレントディレクトリのPATHを表示 | ~/.ssh |
%/ %d | 現在いるカレントディレクトリのPATHを表示 | /home/user/.ssh |
%C | 現在いるカレントディレクトリの 最後のディレクトリを表示 | .ssh |
%B〜%b | 太文字にする | hostname |
%U〜%u | 下線に引く | hostname |
%S〜%s | 強調表示にする | hostname |
オススメ書籍:Linux+コマンド入門 ——シェルとコマンドライン、基本の力
MFA(多要素認証)を有効にする
AWSで必ずやっておきたい多要素認証の設定方法を紹介します。
AWSではセキュリティ強化のために必ずMFA(多要素認証)を設定しましょう。AWSアカウントのルートユーザーとIAMユーザーでMFAを設定することができます。設定も簡単です。
ざっくりMFAとは?
MFAとは、一般的なログイン認証情報であるユーザー名とパスワードに加えて、もう1つ(1つ以上)の認証要素を加え、ユーザに対してこの2つ以上の認証要素を要求し認証する方法です。
今回は追加の認証要素としてワンタイムパスワード(OTP)を追加します。ワンタイムパスワードは6桁の数字となり、受信方法はSMSやメールといったケースも多いですが、私は1Password8で保存してワンタイムパスワードを管理しています。
2FAとの違いは?
ちなみに、2FAという単語もよく見かけますが2FAとは「2要素認証」です。2FAは2つの要素で認証する方法ですが、MFAは2つ以上の要素を設定し認証する方式です。
それではAWSのMFAを有効にしましょう。
AWSでワンタイムパスワードを追加する手順
以下のAWS公式ドキュメントを参考にMFAを有効にします。
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_credentials_mfa_checking-status.html
- STEP
IAM コンソールにアクセス
AWS Management Console にサインインし、IAM コンソールにアクセスします。
IAMコンソール:https://console.aws.amazon.com/iam/
- STEP
セキュリティ認証情報をクリック
右上のナビゲーションバーでユーザー名を選択し、セキュリティ認証情報をクリックします。
- STEP
MFAが有効か無効かを確認
MFAが有効でない場合は下の画像のようにアラートが出ています。
- STEP
MFAを割り当てる
では実際にMFAを割り当て設定します。
- STEP
MFAデバイスを選択
今回は1Password8でワンタイムパスワードを管理するので「Authenticator app」を選択します。デバイス名にはわかりやすい名前をつけます。(なんでも構いません)
- STEP
デバイスの設定
- STEP
MFAコードを2つ入力しMFAを追加する
最後に
最後まで読んでいただきありがとうございます。【AWS】プロンプトのホスト名を変更するはいかがでしたでしょうか。ApacheのconfigをEC2の複数インスタンスで同じ設定にしたり、そういった時に間違わないようにプロンプトにホスト名などを表示してわかりやすくできたと思います。
何より、プロンプトがかっこいいでモチベーションがありますね。
MacやLinux、Pythonなど技術系のkindle本も豊富にあります。詳しくはこちらから。
Amazonの電子書籍読み放題サービス「Kindle Unlimited」でプライム会員を対象に、最初の3か月間を無料体験できるキャンペーンを実施中。マンガ、小説、ビジネス書、雑誌など500万冊から、好きな本を何冊でも読めるキャンペーンです。
初めてkindle unlimited 読み放題をご利用の方は30日間の無料で体験できます。
期間終了後は月額980円で、いつでもキャンセルできます。
200万冊以上が読み放題。お好きな端末で利用可能です。
