AWS
EC2
環境構築
AmazonLinux

AWSのEC2で行うAmazon Linuxの初期設定

AWSのEC2で行うAmazon Linuxの最低限の初期設定をまとめてみました。まだすべき設定が残っているとは思いますので、こちらを更新していければと思っています。

開発環境

  • Mac OS X(El Capitan) 10.11.6
  • Amazon Linux AMI 2017.09.1 (HVM), SSD Volume Type - ami-33c25b55

事前に用意しておく必要があるもの

  • 接続先EC2のパブリックDNS
  • デフォルトユーザ(Amazon Linuxの場合デフォルトはec2-user)
  • EC2からダウンロードした秘密鍵(デフォルトは****.pem)

参考

AWSのEC2にSSH接続

秘密鍵の配置設定

以下のコマンドを実行してEC2からダウンロードした秘密鍵を【.ssh】ディレクトリに配置し、管理しやすくします。

$ mv /Users/ユーザ名/Downloads/秘密鍵名.pem ~/.ssh/

秘密鍵の権限設定

SSHを機能させるためには秘密鍵が公開されていないことが必要ですので、以下のコマンドを実行てし権限の設定をします。

$ chmod 400 ~/.ssh/秘密鍵名.pem

SSH接続

以下のコマンドを実行してAWSのEC2にSSH接続します。

$ ssh -i ~/.ssh/秘密鍵名.pem ユーザ名@パブリックDNS

ログイン完了

以下が表示がされたらログイン完了です。

Last login: Mon Jan 15 17:27:41 2018 from ***.***.***.***

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2017.09-release-notes/

Amazon-linuxの初期設定

パッケージの更新

以下のコマンドを実行してAmazon-linuxのパッケージを更新します。

# パッケージの更新
$ sudo yum update -y

パッケージの自動更新設定

以下のコマンドを実行してyum-cronをインストールし、パッケージの自動更新を設定します。

# インストール
$ sudo yum install yum-cron -y

# 有効化確認
$ sudo chkconfig --list yum-cron

# 有効化
$ sudo chkconfig yum-cron on

# 自動更新設定
$ sudo sed -i "s/^apply_updates.*$/apply_updates = yes/g" /etc/yum/yum-cron.conf

# 起動
$ sudo service yum-cron start

# 起動確認
$ sudo service yum-cron status

タイムゾーンの変更

以下のコマンドを実行してインスタンスのローカルタイムとハードウェアクロックを変更します。

# 現在の設定確認
$ date

# ローカルタイムを【Japan】に変更
$ sudo ln -sf /usr/share/zoneinfo/Japan /etc/localtime

# ハードウェアクロックを【Japan】に変更
$ sudo sed -i "s/\"UTC\"/\"Japan\"/g" /etc/sysconfig/clock

# システム再起動
$ sudo reboot

# 現在の設定確認
$ date

文字コードを日本語に変更

以下のコマンドを実行して文字コードを日本語対応に変更します。

# 文字コードを日本語に変更
$ sudo sed -i "s/en_US\.UTF-8/ja_JP\.UTF-8/g" /etc/sysconfig/i18n

不要なサービスの停止

以下のコマンドを実行してGUIで不要なサービスの停止することができます。

# 不要サービスの一括設定(GUI)
$ sudo ntsysv

ユーザーアカウント追加

ユーザーアカウント追加

以下のコマンドを実行して新規ユーザーアカウントを追加します。今回は【newuser】として作成します。

# newuserを追加
$ sudo adduser newuser

sudo権限の変更

以下のコマンドを実行してsudoersファイルを安全に編集します。

# sudoersファイルの編集
$ sudo visudo

作成したnewuserグループをsudoコマンドがパスワード無しで実行できるように追記します。

## Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL
+ %newuser       ALL=(ALL)       NOPASSWD: ALL

ユーザーアカウント切り替え

以下のコマンドを実行してnewuserへ切り替えます。

# newuserへ切り替え
$ sudo su - newuser

公開鍵認証設定

公開鍵認証用ファイルの作成

以下のコマンドを実行して公開鍵認証用のディレクトリとファイルを作成します。

# newuserのホームディレクトリに.sshディレクトリを作成
$ mkdir .ssh

# ファイルパーミッションを700(所有者のみ、読み取り、書き込み、削除が可能)に変更
$ chmod 700 .ssh

# authorized_keysを作成
$ touch .ssh/authorized_keys

# ファイルパーミッションを600(所有者のみ、読み取りおよび書き込みが可能)に変更
$ chmod 600 .ssh/authorized_keys

キーペアのパブリックキーをコピー

以下のコマンドを実行してパブリックキーをコンピュータから取得します。

# パブリックキーをコンピュータから取得
$ ssh-keygen -y

# キーを持つファイルのパスを指定
Enter file in which the key is (/Users/****/.ssh/id_rsa): /path_to_key_pair/my-key-pair.pem

表示されたインスタンスのパブリックキー(※以下は例)の末尾の【キーペア名】を除いてコピーします。

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V
hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr
lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ
qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb
BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE

取得したキーペアのパブリックキーをペースト

以下のコマンドを実行して、コピーしたキーペアのパブリックキーを【authorized_keys】にペーストします。

#.ssh/authorized_keysを編集
$ vi .ssh/authorized_keys

デフォルトユーザ(ec2-user)を削除する場合

追加したユーザーアカウントでAWSのEC2にSSH再接続

以下のコマンドを実行してAWSのEC2にSSH再接続します。

$ ssh -i ~/.ssh/秘密鍵名.pem 追加したユーザーアカウント@パブリックDNS

ログイン完了

以下が表示がされたらログイン完了です。

Last login: Mon Jan 15 17:27:41 2018 from ***.***.***.***

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2017.09-release-notes/

デフォルトユーザーの削除

以下のコマンドを実行してデフォルトユーザ(ec2-user)とそのホームディレクトリを削除します。

# ec2-userとそのホームディレクトリの削除
$ sudo userdel -r ec2-user

ブログ記事の転載になります。