SSH を使用して Amazon Elastic Compute Cloud (Amazon EC2) Linux インスタンスに接続できる、別のユーザーを追加する必要があります。cloud-init とユーザーデータを使用して、これを行うにはどうすればよいですか?
簡単な説明
ユーザーデータスクリプトを、以下を実行する cloud-init に渡します。
1. 新しいユーザーを作成します。
2. SSH ディレクトリとその中のファイルに、適切な所有者とファイル権限を設定します。
3. SSH パブリックキーを authorized_keys ファイルに追加します。
解決方法
開始する前に、以下の点に注意してください。
1. SSH を使用して EC2 インスタンスに接続します。
2. 次のコマンドを実行して、 cloud-init がインストールされていることを確認します。
sudo yum list installed cloud-init
cloud-init がインストールされていない場合は、次のコマンドを実行してインストールします。
sudo yum install cloud-init
3. Amazon EC2 コンソールを開いてからインスタンスを選択します。
4. [Actions] (アクション)、[Instance State] (インスタンスの状態 を順に選択し、最後に [Stop] (停止) を選択します。
注: [Stop] (停止) が使用不可である場合は、インスタンスが既に停止しているか、そのルートデバイスがインスタンスストアボリュームになっています。
5. キーペアからパブリックキーを取得します。
注: パブリックキーを取得するには、キーペアまたはプライベートキーが必要です。キーペアを作成するには、「Amazon EC2 を使用してキーペアを作成する」を参照してください。SSH セキュリティでは、EC2 コンソールまたはサードパーティツールを使用して、キーペアを作成するのがベストプラクティスです。
6. [アクション]、[インスタンス設定] を順に選択し、最後に [ユーザーデータの表示/変更] を選択します。
7. 次のスクリプトの例をコピーして [User Data] フィールドに貼り付けます。username には、新しいユーザーのユーザー名を入力します。ssh-rsa AB3nzExample には、パブリックキーを入力します。
#cloud-config
cloud_final_modules:
- [users-groups,always]
users:
- name: username
groups: [ wheel ]
sudo:
- "ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart httpd"
- "ALL=(ALL) NOPASSWD: /usr/bin/cp /home/username/webserver_configuration.conf /etc/httpd/conf.d/"
shell: /bin/bash
ssh-authorized-keys:
- ssh-rsa AB3nzExample
このスクリプトの例では、新しいユーザーが以下のルートアクションのみを実行することができます。
- /home/username/webserver_configuration.conf のファイルを /etc/httpd/conf.d/ にコピーします。
- ウェブサーバーサービスを再起動します。
ユーザーに EC2 へのフルアクセスを許可するには、sudo フィールドを sudo: [ "ALL=(ALL) NOPASSWD:ALL" ] に置き換えます。
注: デフォルトでは、cloud-init ディレクティブはインスタンスの起動時にのみ実行します。ただし、このユーザーデータスクリプトを使用すると、cloud-init はインスタンスがリブートまたは再起動するたびにパブリックキーをインスタンスに追加します。ユーザーデータスクリプトを削除すると、デフォルトの機能が復元されます。
8. [保存] を選択します。
9. [アクション]、[インスタンスの状態] を順に選択し、最後に [開始] を選択します。
10. インスタンスのステータスが [running] (実行中) になったら、新しいユーザーとしてログインします。新しいユーザーは ec2 ユーザーと同じデフォルトの動作をします。
注: インスタンスのユーザーデータを変更するには、ModifyInstanceAttribute API アクションを使用します。このアクションを制限するために、AWS Identity and Access Management (IAM) ポリシーを作成できます。
関連情報
キーペアを表示する
Amazon EC2 Linux インスタンスに SSH アクセスを行える新しいユーザーアカウントを追加する方法を教えてください