Amazon オーディブル2ヶ月無料キャンペーン中 5/9まで

【AWS】プロンプトのホスト名を変更して実用性の高いプロンプトにしてみる

5 min

こんにちは。ナミレリです。AWSのEC2インスタンスを管理、運用している場合、複数のターミナルで複数のEC2インスタンスにログインしているという方もいると思います。

ApacheのconfigをEC2の複数インスタンスで同じ設定にしたり、そういった時に間違わないようにプロンプトにホスト名などを表示してわかりやすくしたいと思います。

この記事はこんな人にオススメ

  • EC2インスタンスを立ち上げたけどまだまだ初心者の方
  • 複数のEC2インスタンスを管理されている方
  • 複数のEC2インスタンスにそれぞれのユーザーでログインし運用されている方
  • プロンプトのホスト名変更したい方

ちなみに下記はデフォルトのEC2インスタンス(Amazon Linux)のデフォルトのプロンプトは下のような感じでユーザ名(ec2-user)の後に長いホスト名が表示されます。


cat /etc/hostname
ip-xx-xx-x-x.ap-northeast-1.compute.internal
hostnamectl
   Static hostname: ip-xx-xx-x-x.ap-northeast-1.compute.internal
  (略)

この記事でわかること

  • 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」が表示されます。


cat /etc/hostname
ip-xx-xx-x-x.ap-northeast-1.compute.internal
hostnamectl
   Static hostname: ip-xx-xx-x-x.ap-northeast-1.compute.internal
  (略)

実際にホスト名を変更する

では実際にホスト名を変更します。今回は「aws_ec2」というホスト名にします。


sudo hostnamectl set-hostname aws_ec2

ホスト名の設定後の確認

設定後の確認として、/etc/hostnameの内容とhostnamectlコマンドの結果を確認しましょう。先程設定した「aws_ec2」になっています。


cat /etc/hostname
aws_ec2
hostnamectl
   Static hostname: aws_ec2
  (略)

この時点で一度ログアウトし再ログインするとプロンプトのホスト名部分が変わっています。

この後はzshをインストールして細かく設定していきます。

Amazonの読み放題・聴き放題

kindle unlimited 読み放題
200万冊以上が読み放題

Audible
12万以上の対象作品が聴き放題

Amazon オーディブル:2ヶ月無料キャンペーン中(5/9まで)→ 詳しくはこちら

zshのインストールと設定

zshをインストールされていない場合は下記のコマンドでインストールします。


sudo yum update
sudo yum install zsh

chshが使えるようにyumutil-linux-userをインストールします。


sudo yum install util-linux-user

自分のアカウントのログインシェルをzshにします。chshコマンドでログインシェルを変更します。


sudo chsh [アカウント名]
[アカウント名] のシェルを変更します。
新しいシェル [/bin/bash]: /usr/bin/zsh
シェルを変更しました。

一旦ログアウトして再ログインします。再度ログインすると以下のようなメッセージが表示されます。0を入力すると空の.zshrcが作成されます。


You can:

(q)  Quit and do nothing.  The function will be run again next time.

(0)  Exit, creating the file ~/.zshrc containing just a comment.
     That will prevent this function being run again.

(1)  Continue to the main menu.
--- Type one of the keys in parentheses --- 0

上記を要約すると

qを入力:何もせずに終了。次回再度メッセージが表示される。

0を入力:空の.zshrcを作成する

1を入力:対話形式で.zshrcを設定する

今回は0を入力し、.zshrcをカスタマイズしていきます。

オススメ書籍:Linux+コマンド入門 ——シェルとコマンドライン、基本の力

プロンプトの設定

~/.zshrcでプロンプトを設定します。zshの細かい設定は奥が深いのでこの記事では触れませんが、今回の目的であるプロンプトにホスト名などを表示してわかりやすくしていきます。

すでにプロンプトは先程設定したホスト名が適用されて、[ユーザー名@aws_ec2]になっています。

現在のシェルとzshのバージョン確認

echo $SHELLzsh --versionでzshになっていることを確認するとともに、zshのバージョンも確認しておきます。


echo $SHELL
/usr/bin/zsh
zsh --version
zsh 5.8.1 (x86_64-koji-linux-gnu)

.zshrcの設定

vi~/.zshrcを編集し、下記の2行を追加してみましょう。編集後、source ~/.zshrcで再読込します。


vi ~/.zshrc
PROMPT='%F{green}%m:%~ %B%F{1}❯%F{3}❯%F{2}❯%f%b '
RPROMPT='[%F{green}%n%F{blue}@%F{red}%m%f]'
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]'

左プロンプトと右プロンプト

PROMPTRPROMPTの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]'
色の名前数字
black0
red1
green2
yellow3
blue4
magenta5
cyan6
white7
zshで指摘する色の名前とその数字

%で始まる特殊な文字(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で確認できます。例えば下記のコマンドで確認できます。


print -P'%F{green}%m:%~ %B%F{1}❯%F{3}❯%F{2}❯%f%b '
print -P '%l'
print -P '%M'

特殊な文字説明表示例
%#一般ユーザーの場合は%を表示
スーパーユーザーの場合は#を表示
%
#
%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+コマンド入門 ——シェルとコマンドライン、基本の力

print -P '%C'などでどのように表示されるか確認できます。

Amazonの読み放題・聴き放題

kindle unlimited 読み放題
200万冊以上が読み放題

Audible
12万以上の対象作品が聴き放題

Amazon オーディブル:2ヶ月無料キャンペーン中(5/9まで)→ 詳しくはこちら

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

  1. STEP

    IAM コンソールにアクセス

    AWS Management Console にサインインし、IAM コンソールにアクセスします。

    IAMコンソール:https://console.aws.amazon.com/iam/

  2. STEP

    セキュリティ認証情報をクリック

    右上のナビゲーションバーでユーザー名を選択し、セキュリティ認証情報をクリックします。

  3. STEP

    MFAが有効か無効かを確認

    MFAが有効でない場合は下の画像のようにアラートが出ています。

  4. STEP

    MFAを割り当てる

    では実際にMFAを割り当て設定します。

  5. STEP

    MFAデバイスを選択

    今回は1Password8でワンタイムパスワードを管理するので「Authenticator app」を選択します。デバイス名にはわかりやすい名前をつけます。(なんでも構いません)

  6. STEP

    デバイスの設定

    QRコードを表示して、1Password8でスキャンします。

    1Password8では、ワンタイムパスワードの項目を追加して下の画像のようにスキャンします。

  7. STEP

    MFAコードを2つ入力しMFAを追加する

    1Password8の追加したワンタイムパスワードの項目に表示された6桁のコードを入力し、最大30秒後に新しいコードが生成されるのでそれを入力します。

    これでMFAを追加することができました。

最後に

最後まで読んでいただきありがとうございます。【AWS】プロンプトのホスト名を変更するはいかがでしたでしょうか。ApacheのconfigをEC2の複数インスタンスで同じ設定にしたり、そういった時に間違わないようにプロンプトにホスト名などを表示してわかりやすくできたと思います。

何より、プロンプトがかっこいいでモチベーションがありますね。

MacやLinux、Pythonなど技術系のkindle本も豊富にあります。詳しくはこちらから。

初めてkindle unlimited 読み放題をご利用の方は30日間の無料で体験できます。
期間終了後は月額980円で、いつでもキャンセルできます。
200万冊以上が読み放題。お好きな端末で利用可能です。

定番おすすめ記事

カテゴリー:
関連記事