【AWS】EC2作成~ログインまでやってみよう
はじめに
AWS(Amazon Web Service)とは、世界でもっとも利用されているクラウドプラットフォームサービスです。多くの企業、団体がAWSを利用しており、AWS自体も数多くの新しいサービスが発表されるなど日々、進化しています。
これを期にAWSを勉強したいが、何から勉強していいか分からないといった悩みも多く敷居の高さを感じている方も多くいらっしゃいます。
AWSを理解するには、インターネットや書籍、セミナー等で知識を蓄える事も重要ですが、やはり、ご自身で手を動かして学ばれるほうが、より一層理解が深まるはずです。
今回の記事は、読者の皆様が実際にEC2を作成して、ログインする事。また、ログインに必要なキーペアとは何かについて解説してします。
また、少し面倒なログインの手順を楽に行えるように、TeraTermのマクロを使ったログイン方法も紹介致します。
準備して頂きたいもの
- – AWSアカウント
- – TeraTerm
■目次
- EC2インスタンスの作成
- キーペアとは
- EC2にログインしてみる
- ユーザーを追加する
- ログインを自動化する
- まとめ
EC2インスタンス作成
まずは、EC2インスタンスを作成します。EC2とはAWSにおける仮想サーバーのサービスです。サーバーの負荷や稼働させるアプリケーションの規模などに応じてスペックを選択し、仮想サーバーの台数を増やしたりすることができます。では、実際にEC2インスタンスを作成しましょう。
事前にAWSにログインし、マネジメントコンソールから、EC2と検索してEC2ダッシュボードを開き、リージョンは東京を選択しておいてください。
▼EC2インスタンス作成方法
インスタンスを起動ボタン をクリックします。
AMI(Amazon Machine Image)の選択では無料枠の対象となっている Amazon Linux2 AMI を選択します。
インスタンスタイプの選択では、無料枠の対象となっているt2.microを選択します。
インスタンスの設定・ストレージの追加はデフォルトのまま次へを選択します。
タグの追加で、このサーバーについての名前、用途、注意点など、作成者が自由にタグをつける事ができますが、必須ではないので、次へを選択します。
セキュリティグループの設定を行います。詳しくは後ほど解説致しますので、セキュリティグループの割り当てのラジオボタンで新しいセキュリティグループを作成 が選択します。デフォルトで、SSHがルールに追加されていると思いますが無い場合は ルールの追加のボタンをクリックし、以下のように設定してください。
- タイプ:SSH
- プロトコル:TCP
- ポート範囲:22
- ソース:カスタム 0.0.0.0/0
※上記の設定ですと、すべての送信元からのアクセスを許可する設定になるため、警告が出ますが、あくまで学習用途なので、このまま進めます。
上記完了後、確認と作成ボタンをクリックします
起動ボタンをクリックすると、キーペア作成のポップアップが表示されるので、新規でキーペアを作成します。キーペア名を設定してダウンロードします。なお、 .pemファイルは再ダウンロード出来ませんので、必ず大切に保管してください。
インスタンスの作成 ボタンをクリックします。インスタンスの状態がrunningになったら成功です。
キーペアとは
キーペアとは、情報の暗号化と復号化を行う公開鍵と秘密鍵のセットのことです。2つで一対なのでペアとなっています。上記の手順でダウンロードしたものが秘密鍵とよばれるもので、拡張子が.pemになっています
キーペアを新規で作成した際、EC2側に秘密鍵が作られます。ユーザーはログインする際、自身が持つ公開鍵でログイン情報を暗号化し、サーバー側はその情報を自身が持つ秘密鍵で復号化する事で、アクセスしたのが間違いなく、正規のユーザーである事を認証しているのです。
万が一、悪意ある第三者に通信を読み取られ、情報を改ざんされてしまっても、サーバー側の秘密鍵で復号化できなければ、ログインする事ができない為、安全性の高い仕組みとなっています。
EC2にログインしてみる
今回はWindowsで利用出来て、且つ無償のソフトウェアであるTeraTermを使ってSSHログインを試してみたいと思います。TeraTerm と検索してソフトウェアをダウンロードしておいて下さい。
まず、EC2の画面で、IPv4 パブリックIPを確認してください次にTeraTermを起動し、ホストの項目にそのIPアドレスを指定します。TCPポート:22番、サービス:SSH と選択してOKをクリックします。ユーザー名に ec2-user と入力し、RSA/DSA/ECDSA/ED25519鍵をつかう を選択して、キーペア作成時にダウンロードしておいた.pemファイルを指定します。
OKをクリックし、ログインします。初めてログインした時は、確認のメッセージが表示されますが、yesと入力しログインしてください。
ログアウトする際はexitと入力してログアウトします。
ユーザーを追加する
上記の手順まで実行できれば、学習用途としてEC2インスタンスの操作ができますが、ec2-user というユーザーでしかログインできません。
そこで、新規でユーザーを追加と、sshキーペア作成手順を記載します。不要であれば読み飛ばして下さい。
- # (例) new-user という名前のユーザーを追加します
- # TeraTerm 上にペーストしたい場合は alt+V で行います
- # EC2インスタンスに ec2-user でログインする
- [ec2-user@ip-XXX-XXX-XXX-XXX ~]$
- # ルートユーザーに操作を切り替える
- [ec2-user@ip-XXX-XXX-XXX-XXX ~]$ sudo su
- # ユーザーの追加
- [root@ip-XXX-XXX-XXX-XXX ec2-user]# useradd new-user
- # 追加したユーザーに sudo実行権限を付与
- [root@ip-XXX-XXX-XXX-XXX ec2-user]# usermod -G wheel new-user
- # wheelグループのメンバーを確認する
- [root@ip-XXX-XXX-XXX-XXX ec2-user]# getent group | grep wheel
- wheel:x:10:ec2-user,new-user
- # パスワード不要でsudoの実行を許可する
- [root@ip-XXX-XXX-XXX-XXX ec2-user]# visudo
- ## 以下の記述のコメントアウト(#) を外す
- %wheel ALL=(ALL) NOPASSWD: ALL
- # 作成したユーザー(new-user) に操作を切り替える
- [root@ip-XXX-XXX-XXX-XXX ec2-user]# su – new-user
- # sshキーペアを作成する
- [new-user@ip-XXX-XXX-XXX-XXX ~]$ ssh-keygen -t rsa
- Generating public/private rsa key pair.
- Enter file in which to save the key (/home/new-user/.ssh/id_rsa): //何も入力せずENTERを押下
- Created directory ‘/home/new-user/.ssh’.
- Enter passphrase (empty for no passphrase): //何も入力せずENTERを押下
- Enter same passphrase again: // 何も入力せずENTERを押下
- # .ssh/ に作成されたキーを確認する
- ## id_rsa が秘密鍵で、id_rsa.pubが公開鍵
- [new-user@ip-XXX-XXX-XXX-XXX ~]$ cd .ssh
- [new-user@ip-XXX-XXX-XXX-XXX .ssh]$ ls -la
- total 8
- drwx—— 2 new-user new-user 38 Apr 27 07:08 .
- drwx—— 3 new-user new-user 74 Apr 27 07:06 ..
- -rw——- 1 new-user new-user 1675 Apr 27 07:08 id_rsa
- -rw-r–r– 1 new-user new-user 436 Apr 27 07:08 id_rsa.pub
- # 作成された公開鍵(id_rsa.pub)をauthorized_keysに登録し、秘密鍵で認証出来るようにする
- ## authorized_keys が無い場合
- [new-user@ip-XXX-XXX-XXX-XXX .ssh]$ mv id_rsa.pub authorized_keys
- ## 既にauthorized_keys がある場合(追記する場合)
- [new-user@ip-XXX-XXX-XXX-XXX .ssh]$ cat id_rsa.pub >> authorized_keys
- # authorized_keys のパーミッションを600に変更する
- [new-user@ip-XXX-XXX-XXX-XXX .ssh]$ chmod 600 authorized_keys
- # 秘密鍵(id_rsa)をダウンロードする
- ## TeraTerm のファイル > SSH SCP… を選択
- ## From に id_rsa 、To に パソコンの任意のフォルダを指定してReceiveボタンを押下
- ##
- ## Permission denied で拒否されてしまう場合はパーミッションを適切に変更する
- # 追加したユーザーでログインする
- ## ダウンロードしたid_rsaの拡張子を.pem に変更
- ## ユーザー名 : new-user
- ## RSA/DSA/ECDSA/ED25519鍵を使う : ダウンロードした秘密鍵(id_rsa.pem)
ログインを自動化する
毎回ログインの度に、ホスト名、ユーザー名、秘密鍵を指定してログインするのが面倒くさいと思われるかもしれません。そこで、ログインを楽に行えるようにTeraTermのマクロを使ってログインを自動化する方法を紹介します。
TeraTermマクロで自動化する方法
Tera Term Language (TTL) という言語を使って、sshログイン自動化のプログラムを作成します。
以下の例はssh2で公開鍵認証方式によるアクセスを自動化するプログラムとなります。
- ; セミコロンはコメントを表します
- ; EC2_ADDR に EC2インスタンスのパブリックIPアドレスを代入します
- ; USER にユーザー名を代入します
- ; KEY に秘密鍵のパスを指定します
- ; 文字列は ‘ ‘で囲みます
- ; strconcat コマンドで文字列の結合をしています
- ; ssh2で接続し公開鍵認証方式で認証する為の情報をMSGに格納し、
- ; connectコマンドで実行しています
- EC2_ADDR = ‘XX.XX.XX.XX’
- USER = ‘XXXXXXXXX’
- KEY = ‘C:\XXX\id_rsa.pem’
- MSG = EC2_ADDR
- strconcat MSG ‘:22 /ssh /2 /auth=publickey /user=’
- strconcat MSG USER
- strconcat MSG ‘ /keyfile=’
- strconcat MSG KEY
- connect MSG
- end
上記をテキストエディタなどに貼り付けて、IPアドレス、ユーザー、秘密鍵のパスを設定してください。保存する際に拡張子は .ttlにします。
また、 .ttlファイルを実行する時のプログラムをttpmacro.exeにして下さい。
マクロを利用すると、.ttlのファイルをクリックするだけでログインできる様になるので、非常に楽になりますので、是非お試し下さい
まとめ
いかがでしょうか? 最初は難しそうに思えても、やってみれば案外簡単に出来てしまいませんか? 秘密鍵と公開鍵の関係性も実際に手を動かして、実践してみれば理解できたと思います。
EC2インスタンスやユーザーが増えてきたら、マクロを使ってログインを自動化を利用する仕組みを用意すると作業も捗ると思われますので、お試し下さい。
最後までご覧頂き、ありがとうございました。