LoginSignup
3
4

More than 5 years have passed since last update.

ec2の作成と同時に任意のOSユーザを作成する

Posted at

やりたいこと

ec2を新規作成すると、

  • AmazonLinuxの場合 ec2-user
  • CentOSの場合 centos

こんな感じでデフォルトのOSユーザが作成されると思います。

ですが、セキュリティ上、デフォルトのユーザや共通の鍵ペアを使いたくないので、
こちらで任意に決めた管理用ユーザを、ec2作成時に自動作成するようにしたいと思います。

手順

ec2を作成する際に、

インスタンスの作成 > 3.インスタンスの設定 > 高度な詳細 > ユーザーデータ

と進み、ユーザーデーター項目のラジオボタンを テキストで にチェックします。

そして以下の内容をユーザーデータとして入力します。

#cloud-config
cloud_final_modules:
- [users-groups,always]
users:
  - name: ${作成したいOSユーザ名}
    groups: [ wheel ]
    sudo: [ "ALL=(ALL) NOPASSWD:ALL" ]
    shell: /bin/bash
    ssh-authorized-keys: 
    - ${設置したい公開鍵1}
    - ${設置したい公開鍵2}

あとはいつも通りにec2を作成します。

すると、ここで指定したOSユーザが、デフォルトユーザのかわりにUID:1000として作成されます。
デフォルトユーザは作成されません。

簡単な解説

今回の内容はcloud-initの仕組みを利用しています。

AWSの公式ドキュメント(ユーザーデータやcloud-initについて記載されています)
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/user-data.html

groups: [ wheel ]

指定したOSユーザが、サブグループwheel付きで作成されます。

sudo: [ "ALL=(ALL) NOPASSWD:ALL" ]

wheelグループが、パスワード無しでsudoできるようになります。

ssh-authorized-keys:

ここに記載した内容が、/home/${作成したいOSユーザ名}/.ssh/authorized_keysにそのまま書き込まれます。
そのため、ここにno-agent-forwardingのようなオプションを含めて記載することもできます。

おわりに

この方法を知るまでは、一旦デフォルトユーザでログインして管理ユーザを作成。管理ユーザで入りなおしてデフォルトユーザを削除。
みたいな面倒なことをしていましたが、これでその煩わしさから開放されました。
手順やansibleも、よりシンプルになりました~

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4