1.EC2とは
今回はEC2を用いて仮想サーバーを実際に起動し、サーバーに触れていきましょう!
2.EC2インスタンスの起動から立ち上げまで
今回はUbuntu Server 18.04 LTSの64bitを選択することにします。
①Amazonマシンイメージ(AMI)の選択
AMI とは、EC2の仮想マシン上で使うサーバーOSや、その中でもLinux系だとディストリビューションを使うために必要なファイルシステム一式のイメージのことを指します。
例: Windows Server, Ubuntu, CentOS など
今回は上の検索欄「Ubuntu」と検索をし、Ubuntu Server 18.04の64bit版を選択してみましょう。
②インスタントタイプの選択
EC2では、自分の描いているサービスの規模に合わせてサーバーのCPUやメモリなどのスペックや、ネットワークのパフォーマンスを既定のタイプから選ぶことができます。ベンダー(AWSの提供側)によって予めパフォーマンスの高さが決められたものを 「ServiceLevelAgreement(SLA)」 と言います。
今回は無料対象枠である「tc2.micro」を選択してみましょう。
※無料対象枠であっても、その期間が過ぎたり何度もサーバーを立てたりすると料金が発生する場合があるので注意してください。
③インスタンスの詳細の設定
今回は詳しく説明しませんが、自動割り当てパブリックIPが 有効 であることを必ず確認してください。無闇にそれぞれの項目を変更することもお勧めしません。
ストレージの追加とタグの追加に関しても今回は特に設定を加える必要はありません。
④セキュリティグループの設定
ここではインスタンス上のファイアウォールに関する設定をすることができます。
セキュリティグループを作成し、設定することで開放するポート番号を変更したり、ポート番号ごとにアクセスできるIPアドレスを予め決めておくことができます。
「ポート番号」 とは、アプリケーションプログラムごとに割り当てられた通信データの出入口です。TCPとUDPそれぞれ設定をすることができます。例えばTCPの80番ポートを開けたらHTTP通信が出来るようになり、Apache2などのwebサーバー用ソフトウェアが機能するようになります。逆に、TCP80番を閉じればHTTP通信が出来なくなり、Apache2も機能しません。
では、現状どのような設定がされているのか見てみましょう。
タイプがSSH、プロトコルがTCP、ポート範囲が22となっていますね。これは、TCPの22番を開けてSSHが利用できるという状態を表しています。 「SSH」 とは、サーバー外部の端末からリモート接続するために使う通信プロトコルのことです。
また、ソースという箇所ではカスタムの0.0.0.0/0と書いてありますね。 「0.0.0.0/0」 は特殊なIPアドレスで、全てのIPアドレスから接続できることを表しています。つまり、この設定をするとサーバーが全世界に公開され、あらゆる場所からアクセス出来るということです。
今回は現状の設定で確認を押し、起動してみましょう。
⑤公開鍵の設定と起動
起動ボタンを押すと、ペアキーの設定画面になったと思います。ここでは私たちがサーバーにログインするために必要な公開鍵を作ります。公開鍵は、 「公開鍵認証」 に使う鍵の1つです。公開鍵認証では2つの鍵を使います。
まず1つ目は私たちが今から作る 「秘密鍵」 、そしてもう1つはサーバー上に保管される 「公開鍵」 です。公開鍵に対して秘密鍵を照合し、確認することで初めてログインすることが出来ます。したがって、秘密鍵は 厳重に管理 しなければなりません。
さて、今回は新しくペアキーを作成します。名前は「mytest」にしましょう。
決定すると、「mytest.pem」という秘密鍵がダウンロードされ、サーバーが起動します。
3.サーバーへのログインからパスワード設定まで
サーバーを起動させた後が本番です。きちんと自分の作ったサーバーを使いこなせるようにしましょう。今回はSSHでログインする際、公開鍵認証ではなくパスワードでログインできるよう設定を変更していきます。
①サーバーへログイン
SSHでサーバーへログインします。予めEC2のコンソール上でパブリックIPを確認しておきましょう。
公開鍵でログインする際、公開鍵があるフォルダで行う必要があります。ターミナルで移動しましょう。
Macの場合はDownloadsフォルダにありますね。cdコマンドで移動してみましょう。
cd Downloads
Downloadsフォルダに移動できました。念のため「mytest.pem」があるか確認してみます。
ls | grep -i mytest.pem
mytest.pemと表示されればファイルが正しくダウンロードできています。
では、早速SSHでログインしていきましょう。
ssh ubuntu@パブリックIP -i mytest.pem
無事にログインできたらターミナル画面下に以下のような表示が出ると思います。
ubuntu@パブリックIP ~ $
無事ログイン出来たでしょうか。出来ていない方はもう一度パブリックIPと自分の書いたコマンドを確認してみましょう。出来た方はひとまずお疲れ様でした!少し休憩しましょう。
②パスワード認証に変更する
いよいよ公開鍵認証からパスワード認証へ変更していきます。
まずは以下のコマンドでsshdの設定ファイルがあるディレクトリまでいきます。
$ cd /etc/ssh
「etc」には主に 設定に関するファイルやディレクトリ が存在しています。今回はその中でもsshフォルダにある「sshd_config」というものを触っていきます。まずはlsコマンドでsshd_configがあるかどうか確認してみましょう。
$ ls | grep -i sshd_config
するとsshd_configと表示されるはずです。パスワード認証に変更するには 「PasswordAuthentication」をyes にする必要があります。まずはyesになっているか確認してみましょう。以下のコマンドを打ってください。
$ cat sshd_config | grep -i password
このコマンドではsshd_configを開き、更に「password」というキーワードがある箇所を絞り込み表示させています。勘の良い方は既にお気づきかもしれませんが、 「grep」 は絞り込み検索をする時によく使われるコマンドです。便利なので覚えておきましょう。
さて、「PasswordAuthentication = yes」になっていましたか。恐らくnoと表示されたはずです。
ではsshd_configの中身を変えていきましょう。以下のコマンドを打ってください。
$ sudo vim sshd_config
vimというコマンドを使うことでファイルの中身を編集し、改変することができます。「PasswordAuthentication」がある箇所までいきましょう。
文字を入力するためにはインサートモードにする必要があります。「i」を押しましょう。
すると文字が入力できるようになるので、noをyesに変更します。そして「esc」を押しましょう。
最後に保存してvimは終了です。「:」を押して、その後に「wq」と打ってください。
「w」は write(保存) 、「q」は quit(終了) です。
変更されているかどうか確認してみましょう。もう1回あのコマンドを使います。
$ cat sshd_config | grep -i password
「PasswordAuthentication=yes」になっていることが確認できましたか。
③パスワードを設定する
パスワード認証に変更したとは言え、パスワードが存在しなかったら意味がありませんよね。
そこで、ubuntuユーザーにパスワードを設定していきます。以下のコマンドを打ちましょう。
$ sudo passwd ubuntu
新しいパスワードを入力するよう求められましたね。好きなパスワードを入力しましょう。
さて、先ほどから登場している「sudo」というコマンドが気になりますよね。
「sudo」 とは、コマンドを管理者権限で実行するために使うコマンドです。
先ほどのsshd_configも、今さっき行ったパスワード変更も「sudo」が無ければ実行できません。
使用する機会が多いので必ず覚えておきましょう。
さぁパスワードを設定したのでこれでおしまい! ...と思いきや、実はまだ今のままではパスワード認証が出来ないのです。次項で最後ですのでもう少しお付き合いください。
④sshdを再起動する
先ほど設定したsshd_configを反映するには、一度sshdを再起動する必要があります。以下のコマンドを打ちましょう。
$ sudo service sshd restart
上手くいったら特に何も表示されず次のコマンドが入力できるようになります。
ログアウトしてパスワード認証が出来るかどうか確認してみましょう。
$ exit
ssh ubuntu@パブリックIP
パスワードを打ってログイン出来たら、無事設定が完了したということになります。
お疲れ様でした!
4.最後に
自分のサーバーは無事使えるようになりましたか。
余裕のある方はApacheをサーバー内にインストールして、webサーバーを立ててみるのも良いと思います。その時はfirewallの設定とセキュリティグループの再設定も忘れずに!
さて、今回たったこれだけの作業でも、「Linux」や「ネットワーク」の基礎概念に対する正しい理解が求められてきます。普段から基礎を大切に、たくさん勉強していきましょう。
「基礎概念」 に関して詳しく知りたい方は以下の記事をご覧ください。
https://engineering.var.co.jp/entry/2020/12/09/171118engineering.var.co.jp
こちらもみてね! https://envader.plus