目的
- AWSアカウントを作成し、EC2インスタンス(Amazon Linux 2)を立てて、任意のユーザでSSH接続する
環境
- Hardware
- MacBook Pro (2018 13-inch Four Thunderbolt3 Ports)
- 2.7GHz QuadCore Intel core i7
- 8 GB 2133 MHz LPDDR3
- Software
- macOS Monterey ver12.2
AWSアカウントを作成する
- まずは、AWSにアカウントを作成しましょう。
- AWSアカウントは、AWS新規アカウント作成ページから作成できます。必要項目を入力したら続行をボタンを押します。
- 次に氏名や住所などの個人情報を入力します。
- 次にクレジットカード情報を入力します。キャプチャにもある通り、AWS無料利用枠の制限内の利用であれば費用は発生しません。
- 次に本人確認をします。私は音声通話だとうまく認証できませんでしたので、テキストメッセージにて認証を行います。
- 送られてきた認証コードを入力して、続行ボタンを押します。
- 次にサポートプランを選択します。ベーシックサポートプランを選択して、サインアップを完了ボタンを押します。
- この画面が出てきたら全ての手続きは完了です。AWSマネジメントコンソールへ進むボタンを押して、AWSマネジメントコンソールへログインしましょう。
- ログインすると右上がこのように、リージョン名とアカウント名が表示されていますが、稀にリージョンの選択が最寄りのリージョンになっていない場合がありますので、使用したいリージョンを選択してください。
- AWSアカウントは、AWS新規アカウント作成ページから作成できます。必要項目を入力したら続行をボタンを押します。
IAMユーザーを作成する
- アカウント作成直後は、ルートユーザのみが作成された状態ですので、別途実行用のIAMユーザを作成します。以降は追加したIAMユーザでログインして作業を行なっていきます。
- IAM>ユーザーとページ遷移して、「ユーザーを追加」ボタンを押します。
- 必要項目を入力します。今回は、両方のアクセス方法にチェックをつけて進めます。
- グループの作成ボタンを押し、「Administrators」グループを作成しましょう。
- ポリシーは既に用意されている「AdministratorAccess」を選択します。
- オプションで、ユーザーにタグをつけることができますが、特に必要性がなければ何も入力しなくてOKです。ここでは、仮にこのユーザーが一時的なユーザーである旨を説明しておきます。
- 最後に設定内容を確認し、問題がなければユーザーの作成ボタンを押します。
- 成功の文字を確認したら、.csvのダウンロードボタンを押して、認証情報をダウンロードしておきます。
- ダウンロードした認証情報の管理は厳重に!
- サインインページのURLが記載れていますので、クリックしてログインしてみましょう。
- IAM>ユーザーとページ遷移して、「ユーザーを追加」ボタンを押します。
IAMユーザーでAWSコンソールにログインする
EC2インスタンスを作成する
OSを選択する
- 今回は無料枠内での利用になりますので、「Amazon Linux 2 AMI」を選択します。カーネルバージョンで選択肢が分かれていますが、どちらを選択しても問題ありません。私は、5.10を選択しました。
インスタンスタイプを選択する
無料枠内で利用したいので、「t2.micro」を選択して、次のステップ:インスタンスの詳細の設定ボタンを押します。確認と作成ボタンを押してもインスタンスを作成できますが、勉強のために詳細設定を一通り確認しておくと良いでしょう。
インスタンスの詳細の設定
インスタンスの数、ネットワーク、インスタンスの基本動作などの詳細設定することができます。今回はデフォルト値のままで問題ありません。
ストレージの追加
作成するインスタンスのストレージ容量を設定します。今回はデフォルト値のままで問題ありません。
タグの追加
ユーザー作成時と同様にインスタンスにもタグを追加することができます。今回は特に追加する必要はありませんが、私は便宜上、用途を記載しておきます。
セキュリティグループの設定
セキュリティ設定を行います。今回はデフォルト値のままで問題ありません。
確認と作成
最後に設定内容を確認し、問題がなければ、右下の起動ボタンを押します。
すると、キーペアが見つからない旨のメッセージが表示されますので、新しいキーペアの作成を選択してSSH接続用のキーペアを生成しておきましょう。
キーペアのダウンロードボタンを押すと、[キーペア名].pemというファイルがダウンロードされます。
ダウンロードを確認したら、インスタンスの作成ボタンを押します。
作成したインスタンスにAWSコンソール上から接続する
作成したインスタンスにチェックを入れ、接続ボタンを押します。
デフォルトユーザのec2-userを選択してログインできるか確認しましょう。
以下のようにCLIが表示されれば正常にログインできています。
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
8 package(s) needed for security, out of 14 available
Run "sudo yum update" to apply all updates.
注意!
AWSコンソールから接続した場合、Safariから接続すると、コマンドが正常に入力できない場合がありますので、GoogleChromeを使用することをおすすめします。
デフォルトのユーザー「ec2-user」でSSH接続する
ダウンロードした秘密鍵(tmp_rsa.pem)をsshフォルダに配置する
お好きな方法で、/Users/ユーザー名/.sshフォルダに、先ほどダウンロードしたtmp_rsa.pemを配置します。
Downloadsフォルダにダウンロードしている場合は、以下のコマンドでコピーできます。
$ cp /Users/[ユーザー名]/Downloads/tmp_rsa.pem /Users/[ユーザー名]/.ssh/
秘密鍵のアクセス権を変更する
秘密鍵は厳重に管理する必要があります。AWSインスタンスへの接続時に、秘密鍵ファイルのアクセス権が緩いと接続できません。
以下のコマンドでアクセス権を変更します。
$ chmod 400 tmp_rsa.pem
別のユーザーでSSH接続する
では、ec2-userでSSH接続してみます。
$ ssh -i "tmp_rsa.pem" ec2-user@[インスタンスのパブリックIPアドレス]または、[インスタンスのパブリックDNS名]
作成したインスタンスのパブリックIPアドレス、及び、パブリックDNS名はAWSコンソールのインスタンスの概要から確認できます。
The authenticity of host 'XXX.XXX.XXX.XXX (XXX.XXX.XXX.XXX)' can't be established.
ED25519 key fingerprint is SHA256:*************************.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?
上記のような結果が得られるので、yesと入力すると、以下の文字が表示され、ログインに成功する。
Last login: Sat Feb 26 07:09:22 2022 from *******************************
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
8 package(s) needed for security, out of 14 available
Run "sudo yum update" to apply all updates.
ログインユーザーを作成する
rootユーザーに切り替える
$ sudo -i
新しいユーザーを作成する
$ useradd raptony //ユーザーを作成
$ passwd raptony //パスワードを設定
ユーザー raptony のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
ユーザー権限を設定する
sudoコマンドが実行できるwheelグループに所属させて、権限を与えます。
$ usermod -G wheel raptony
ec2-userの公開鍵をコピーする
$ mkdir /home/raptony/.ssh
$ chmod 700 /home/raptony/.ssh
//公開鍵を新規ユーザーのディレクトリにコピーする
$ cp /home/ec2-user/.ssh/authorized_keys /home/raptony/.ssh
//所有者を変更する
$ chown -R raptony:raptony /home/raptony/.ssh
SSH接続できることを確認する
logoutコマンドでssh接続を切断して、再度追加したユーザーでssh接続できるか確認しましょう。
$ ssh -i "tmp_rsa.pem" raptony@xxx.xxx.xxx.xxx
Last login: Sat Feb 26 13:11:15 2022
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
ec2-userから接続できないようにする
新規ユーザでログインできたので不要なデフォルトユーザーを削除して接続されないようにしておきます。
ec2-userを削除する
$ userdel -r ec2-user
注意と免責
- 注意 不要なインスタンスを削除してください。削除しなかった場合、約一年後に見知らぬ請求が発生する可能性があります。
-
補足 AWS無料枠を、無料のまま利用するには、いくつかの条件を守る必要があります。
- EC2はインスタンスの稼働時間によって課金されます。720時間/月の無料枠が1年間ついていますが、これはインスタンスが稼働している合計時間となります。例えば、インスタンスを2つ稼働させた場合、無料枠は360時間/月となる点にご留意ください。