AWS関連

【AWS】EC2内でユーザーを追加する方法

はじめに

過去に 『【AWS】EC2インスタンスにSSH接続用ユーザーを追加する方法』 といった記事を書きましたが、改めて似たような内容を整理していきます。

改めて同様の作業をする機会があり、色々と調べながら作業を進めてきた内容を盛り込んでみました。(書き直すのが手間だったので、新たに記事を作成しました。。)

(心の声)手順に何か違和感がありましたら、Twitter等でコメントいただけるとありがたいです。泣いて喜びます。

  • 自身(作業者)は sayjoy として既にユーザー登録されているものとします
  • 今回追加するユーザー名は NEWUSER とします
  • EC2 と記載しておりますが、Linux へのユーザー追加に関する記事です

以下、作業手順になります。

鍵の準備

キーペアを作成する

ssh-keygen コマンドを利用してキーペア(鍵)の作成を行います。

# キーペアの作成(ローカル環境にて実行)
ssh-keygen -C "" -f ~/Downloads/id_rsa_new_user
  • -f オプションで鍵の作成場所、およびファイル名を指定することが可能。
  • -C オプションに “” を渡すことで、鍵情報内の末尾に記載されるコメント部分を空で指定することができる。

※-f オプションが未指定の場合でも、上記コマンド実行時に表示される1つ目の質問に回答する形でディレクトリおよび任意のファイル名を指定することが可能です。

(余談) Puttygen 等で作成した公開鍵を利用する場合には形式変換が必要

後述の 「公開鍵を登録(追記)する」 手順に関連する部分ですが、仮にPuttygen 等で作成した鍵を利用する場合、OpenSSH 形式となっていないため形式変換を行いつつ登録(追記)を行う必要があります。

形式変換には ssh-keygen コマンドを利用します。

# (鍵の転送・ユーザー作成が完了した状態で、EC2上で) .ssh ディレクトリに移動する
cd /home/NEWUSER/.ssh/

# ssh-keygen コマンドにて形式変換を行いつつ、authorized_keys ファイルに追記する
ssh-keygen -i -f id_rsa_new_user.pub >> authorized_keys
  • ssh-keygen コマンドを利用する
  • -i オプションで公開鍵の形式を変換する
  • -f オプションでファイルを指定する

ユーザーの追加

鍵をEC2に転送(格納)する

ローカルで作成した鍵を、EC2内(ひとまず自分のユーザーディレクトリ直下)に格納します。

ファイル転送にはscp コマンドを利用します。(注:格納するのは、公開鍵”〜.pub” です)

# EC2に鍵を転送する
scp -i ~/.ssh/id_rsa_sayjoy ~/Downloads/id_rsa_new_user.pub sayjoy@XX.XX.XX.XX:/home/sayjoy/

SSH接続する

自身(作業者)のユーザー情報、および鍵情報を利用してSSH 接続を行います。

# サーバーにSSH接続する
ssh -i ~/.ssh/id_rsa_sayjoy sayjoy@XX.XX.XX.XX

ユーザーを追加する(+その他もろもろ)

ユーサー作成に加え、パスワードの設定やディレクトリの作成を行います。

# root ユーザーになる
sudo su -

# ユーザーを作成する
useradd -m NEWUSER

# パスワードを設定する(適当なパスワードを設定&共有して、変更を依頼する)
passwd NEWUSER

# .ssh ディレクトリを作成する
mkdir /home/NEWUSER/.ssh/

公開鍵を登録(追記)する

準備した鍵情報を、authorized_keys ファイルに追記します。

これにより今回追加したユーザーがSSH 接続できるようになります。

# 作成したディレクトリに鍵ファイルを格納(移動)する
mv /home/sayjoy/id_rsa_new_user.pub /home/NEWUSER/.ssh/

# 作成したユーザーディレクトリに移動する
cd /home/NEWUSER/.ssh/

# 公開鍵情報を追記する
cat id_rsa_new_user.pub >> authorized_keys
# (形式変換が必要な場合は、下記コマンドにて追記を行う必要あり)
# ssh-keygen -i -f id_rsa_new_user.pub >> authorized_keys

オーナー情報/パーミッション設定を変更する

今回作成したディレクトリ等の設定を変更します。

# .ssh ディレクトリのオーナーを変更する
chown -R NEWUSER:NEWUSER /home/NEWUSER/.ssh/

# パーミッション設定を変更する
chmod 700 /home/NEWUSER/.ssh/
chmod 600 /home/NEWUSER/.ssh/authorized_keys

(おまけ) ユーザーに sudo を許可する

追加したユーザーに対してsudo を許可する場合は下記操作も併せて実施します。

# 設定ファイルのバックアップ(念のため)
cp -p /etc/sudoers.d/90-sudoable-users /etc/sudoers.d/90-sudoable-users.bak

# 設定ファイルへの追記を行う("/etc/sudoers.d/" 配下の設定ファイル名は環境ごとに異なるかも)
echo "NEWUSER ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/90-sudoable-users

上記ディレクトリ配下に格納されているファイルを編集する以外の方法として、”/etc/suders” を直接編集する方法もあるようです。

※このファイルの修正には visudo コマンドを使うこと。

動作確認(SSH接続)

今回追加したユーザー情報を利用して、SSH接続ができることを確認します。(秘密鍵が手元にない場合には実施できないので、対象メンバーに動作確認を依頼)

# EC2 に対して、NEWUSER の情報を使ってSSH 接続を行う
ssh -i ~/Downloads/id_rsa_new_user NEWUSER@XX.XX.XX.XX

メンバーへの通知

最後に、作成したユーザー情報についてメンバーに通知します。

通知内容は以下の通りです。

  • EC2 インスタンスの情報(EIP 等もろもろ)
  • ユーザー名:NEWUSER
  • キーペア情報(提供してもらった公開鍵を利用した場合は不要)
  • パスワード情報(変更を併せて依頼する)

まとめ

以前の記事を作成したときより、少しはマシな手順になっているかと思いますがいかがでしょうか。

このあたり、後回しにしているLPIC の学習&資格取得を進めることでよりクリアになると改めて感じたので、今後チャレンジしていこうと思います。

以上です。最後まで読んでいただきありがとうございました。