Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

やりたいこと

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も、よりシンプルになりました~

tomozo6
元Cobolerで金融系案件のPM。 インフラの技術に興味があって転職。 オンプレのホスティングサービスの構築,保守,運用を担当。 現在、時代の流れによりオンプレ環境を全てAWSへ移設する作業中。 全体改善,効率化,DevOpsが最近の興味関心。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away