SSH で Amazon Elastic Compute Cloud (Amazon EC2) Linux インスタンスに接続できる別のユーザーを追加する必要があります。そのためには、cloud-init とユーザーデータをどのように使用すればいいですか?
簡単な説明
ユーザーデータスクリプトを、次の手順を実行する cloud-init に渡します。
1. 新しいユーザーを作成する。
2. SSH ディレクトリとその中のファイルに対する適切な所有権とファイルのアクセス権限を設定する。
3. authorized_keys ファイルに SSH パブリックキーを追加する。
解決策
開始する前に、次の点に注意してください。
- インスタンスを停止して再起動すると、インスタンスストアボリューム上のデータはすべて消去されます。残しておきたいデータがあるインスタンスストアボリュームは、必ずバックアップしてください。詳細については、「AMI のルートデバイスタイプの判別」を参照してください。
- インスタンスを停止して再起動すると、インスタンスのパブリック IP アドレスがインスタンスによって変更されます。外部トラフィックをあなたのインスタンスにルーティングするときは、パブリック IP アドレスの代わりに Elastic IP アドレスを使用することをお勧めします。
1. SSH で EC2 インスタンスに接続します。
2. 次のコマンドを実行して、cloud-init がインストールされていることを確認します。
sudo yum list installed cloud-init
cloud-init がインストールされていない場合は、次のコマンドを実行してインストールします。
sudo yum install cloud-init
3. Amazon EC2 コンソールを開き、インスタンスを選択します。
4. [アクション] を選択し、[インスタンスの状態] を選択して、[停止] を選択します。
注: [停止] を選択できない場合は、インスタンスがすでに停止しているか、そのルートデバイスがインスタンスストアボリュームであるかのどちらかです。
5. キーペアからパブリックキーを取得します。
注: パブリックキーを取得するには、キーペアまたはプライベートキーが必要です。キーペアを作成するには、「Amazon EC2 を使用してキーペアを作成する」を参照してください。SSH セキュリティについては、EC2 コンソールまたはサードパーティツールを使用してキーペアを作成するのがベストプラクティスです。
6. [アクション]、[インスタンス設定]、[ユーザーデータの表示/編集] の順に選択します。
7. 次のサンプルスクリプトをコピーして、[ユーザーデータ] フィールドに貼り付けます。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/ にコピーする
- Web サーバーサービスを再起動する
ユーザーに EC2 へのフルアクセス権限を付与するには、sudo フィールドを sudo: [ "ALL=(ALL) NOPASSWD:ALL" ] に置き換えます。
注: デフォルトでは、cloud-init ディレクティブはインスタンスの起動時にのみ実行されます。ただし、このユーザーデータスクリプトを使用すると、cloud-init はインスタンスが再起動または再開するたびにパブリックキーをインスタンスに追加します。ユーザーデータスクリプトを削除すると、デフォルトの機能が復元されます。
8. [保存] を選択します。
9. [アクション] を選択し、[インスタンスの状態] を選択して、[開始] を選択します。
10. インスタンスが [実行中] の状態になったら、新規ユーザーとしてログインします。新しいユーザーのデフォルトの動作は ec2-user と同じです。
注: インスタンスのユーザーデータを変更するには、ModifyInstanceAttribute アクションを使用します。このアクションを制限する AWS Identity and Access Management (IAM) ポリシーを作成できます。
関連情報
キーペアの表示
Amazon EC2 Linux インスタンスに SSH アクセスを持つ新しいユーザーアカウントを追加する方法を教えてください。