0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

EC2のユーザーデータを使用してlinuxユーザーの追加を行ってみた

Posted at

EC2作成時にユーザーを追加してsudo権限を与えて…と毎回やるのは面倒なので、EC2のユーザーデータを使用して初期化作業をサクっと完了させる。

準備・必要なもの

  • AWSアカウント
  • SSHキー(公開鍵・秘密鍵) - SSHで接続するため必要
  • vscode - WindowsからのSSH接続で使用

EC2インスタンス作成

コンソール画面からインスタンスを起動。

イメージで Amazon Linux 2023 を選択
インスタンスタイプ、キーペア、セキュリティーグループを良しなに選択。

ec2-userdata-01.png

高度な詳細 > ユーザーデータに以下を入力

#!/bin/bash

# init config
echo "%wheel  ALL=(ALL)       NOPASSWD: ALL" >> /etc/sudoers
hostnamectl set-hostname myserver1

# add user
adduser myuser1
usermod -aG wheel myuser1
mkdir /home/myuser1/.ssh
touch /home/myuser1/.ssh/authorized_keys
chown -R myuser1:myuser1 /home/myuser1
echo "ssh-rsa XXXXX..." >> /home/myuser1/.ssh/authorized_keys

ec2-userdata-02.png

※myserver1, myuser1はお好みで設定する。

最後の"ssh-rsa XXXXX..."の箇所にはあらかじめ準備したSSH公開鍵(id_rsa.pub)の内容を貼り付ける。

これで、sudoのパスワードスキップ、ホスト名の設定、ユーザーの追加とsudo許可、SSHキーの設定が完了する。

SSH接続

インスタンスが起動したらvscodeにRemote - SSH Extensionを追加する。
Remote ExplorerからSSHの横の歯車で~/.ssh/configファイルを開く。
(もしくは、直接~/.ssh/configファイルを作成・編集する)

ec2-userdata-03.png

~/.ssh/configに以下のように設定を追加

Host myserver1
  HostName ec2-xx-xx-xx-xx.ap-northeast-1.compute.amazonaws.com
  User myuser1
  IdentityFile "C:\temp\ssh\id_rsa"

ec2-userdata-04.png

設定名・ホスト名・ユーザー名・SSH秘密鍵のパスを指定する。
ホスト名は起動後にAWSコンソールでパブリック IPv4 DNSまたはパブリック IPv4 アドレスを確認して設定する。
ユーザー名はサーバー作成時に指定したユーザー名と合わせる。
(IdentityFileで秘密鍵を指定しなければ デフォルトの~/.ssh/id_rsaが使用される。)
設定追加後にExtensionのRefreshボタンで反映される。

追加した設定を右クリックし、接続する。
ec2-userdata-06.png

初回接続時はサーバのタイプとfingerprintの確認が表示される。
Amazon LinuxならLinuxを選択する。
ec2-userdata-07.png
ec2-userdata-08.png

接続が完了したら、メニューのTerminalからNew Terminalで新しいターミナル画面が下に開く。
ec2-userdata-09.png

補足: SSHキーの作成(Windows)

SSHキーがない場合、dockerがインストール済みなら以下のコマンドで作成できる。

docker run -it -v c:\temp\ssh:/var/ssh alpine sh -c "apk add openssh && ssh-keygen -N '' -f /var/ssh/id_rsa"

これでc:\temp\ssh以下にid_rsaid_rsa.pub出力される。

補足: SSH秘密鍵のアクセス権限

WindowsのvscodeからSSHで接続する場合、SSH秘密鍵を自分以外のユーザーが読み取りできると接続時にエラーになる。

ログを見るとWARNING: UNPROTECTED PRIVATE KEY FILE!とかLoad key "C:\\temp\\ssh\\id_rsa": bad permissionsとエラーが表示されている。

この場合、ファイルのアクセス許可を修正し、自分以外からアクセスできないようにする必要がある。

自分のユーザーにフルアクセス権限を指定した後、Authenticated UsersUsersグループ等からアクセスできないようアクセス権限を削除する。
ec2-userdata-11.png

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?