Amazon Elastic Compute Cloud (Amazon EC2) Linux インスタンスに SSH 経由で接続できる、追加ユーザーを作成したいと考えています。
簡単な説明
次のタスクを実行するユーザーデータコマンドを用意します。
- 新しいユーザーを作成します。
- そのユーザーに sudo 権限を付与します。
- authorized_keys ファイルに SSH パブリックキーを追加します。
解決策
重要: インスタンスを変更する前に、次の項目を確認してください。
次の手順を実行します。
-
SSH または Session Manager を使用してインスタンスにログインします。
-
cloud-init がインストールされているかどうかを確認するには、次のコマンドを実行します。
$ cloud-init -v
コマンドがエラーを返す場合は、次のコマンドを実行して Linux ディストリビューションにインスタンスをインストールします。
Debian ベースのインスタンス
$ sudo apt-get install cloud-init
RPM ベースのインスタンス
sudo dnf install cloud-init
Suse インスタンスの
zypper install cloud-init
-
cloud-init のインストールを確認した後、インスタンスの停止を続行します。
注: Stop アクションを実行できない場合は、そのインスタンスは停止済み、またはインスタンスのルートデバイスはインスタンスストアボリュームです。
-
新しいユーザーに接続するためのパブリックキーを、プライベートキーから生成します。
注: パブリックキーを取得するには、キーペアまたはプライベートキーが必要です。キーペアの作成方法については、「Amazon EC2 インスタンス用のキーペアを作成する」を参照してください。SSH のセキュリティを高めるには、EC2 コンソールまたはサードパーティ製ツールを使用してキーペアを作成することをおすすめします。
パブリックキーを取得するには、次のコマンドを実行します。プライベートキーにパスフレーズが設定されている場合は、求められた際、そのパスフレーズを入力します。
$ ssh-keygen -f <private_key_file> -y
-
次のコマンドにパブリックキーを挿入し、このコマンドを使用して user-data フィールドを更新します。
インスタンスを選択します。
ナビゲーションペインで [アクション] を選択し、[インスタンス設定] を選択します。
[ユーザーデータの編集] を選択し、スクリプトをフィールドに貼り付けます。
注: プレースホルダーの username を目的のユーザー名に置き換えてください。ssh-rsa AB3nzExample にパブリックキーを入力してください。Debian インスタンスを使用する場合は、groups の値を wheel から sudo に変更します。
#cloud-config
cloud_final_modules:
- [users-groups,always]
users:
- name:username
groups: [ wheel ]
shell: /bin/bash
sudo: ["ALL=(ALL) NOPASSWD:ALL"]
ssh-authorized-keys:
- ssh-rsa AB3nzExample
上記のコマンドでは、無制限アクセスが付与されたユーザーが作成されます。そのユーザーの sudo アクセスをブロックするには、sudo の値を false に設定します。詳細については、cloud-init のウェブサイトで「クラウド構成の例」を参照してください。
注: デフォルトでは、cloud-init ディレクティブはインスタンスの起動時にのみ実行されます。ただし、このユーザーデータスクリプトを使用すると、cloud-init はインスタンスが再起動または再開するたびにパブリックキーをインスタンスに追加します。ユーザーデータスクリプトを削除すると、デフォルトの機能が復元されます。
-
[保存] を選択します。
-
[アクション] を選択し、[インスタンスの状態] を選択した後、[開始] を選択します。
-
インスタンスが running ステータスに移行した後、新しいユーザーでログインします。新しいユーザーのデフォルト動作は、ec2-user と同じです。
注: ModifyInstanceAttribute API アクションを使用すると、インスタンスのユーザーデータを更新できます。このアクションを制限する AWS Identity and Access Management (IAM) ポリシーを作成します。
関連情報
キーペアの表示
SSH アクセスが可能な新しいユーザーアカウントを EC2 Linux インスタンスに追加する方法を教えてください