Lightsailでは、OSだけでなくアプリも一緒にインストールされた状態で使うこともできます。しかし一からカスタマイズして使いたかったので、OSのみでインスタンスを作成して、必要なアプリを入れてWebサーバを構築していきます。
目次
インスタンスの作成
Ubuntu 20.04 LST を選択して、インスタンスを作成します。
インスタンスが作成されます。「保留中」と表示されますが、30秒ほど待つと「実行中」に変わります。
インスタンス名(Ubuntu-1)をクリックして、ネットワーキングの設定を開きます。
「静的IPをアタッチする」をクリックして、パブリックIPを割り当てます。
デフォルトユーザーで接続
デフォルトユーザーでSSHへ接続するには「ブラウザを使用する」もしくは「デフォルトキーを使用する」の方法があります。
ブラウザを使用してSSHに接続
接続から「SSHを使用して接続」をクリック
ブラウザでSSHが起動します。
デフォルトキーを使用してSSHに接続
接続の「デフォルトキーのダウンロード」で秘密鍵をダウンロードします。
ダウンロードした秘密鍵を、Windowsの場合は「C:\Users\{user_name}\.ssh\***.pem」に、Mac/Linuxの場合は「~/.ssh/LightsailDefaultKey-ap-northeast-1.pem」に保存しておくといいと思います。
本記事では、秘密鍵のパスを「.ssh/LightsailDefaultKey-ap-northeast-1.pem」と表記します。
ターミナル/コマンドプロンプトを開いて、SSHに接続します。
>ssh -i .ssh/LightsailDefaultKey-ap-northeast-1.pem {user}@{host}
- {user}:ユーザー名 (画面では ubuntu)
- {host}:接続先 (画面では 43.206.28.215)
この画面が表示されたら「yes」を入力してEnterを押します。
一番下が「{user}@ip-***: ~$」になっていればSSHの接続完了です。
新たにユーザーを作成してSSH接続
デフォルトで用意されているユーザー(ここでは ubuntu)をそのまま使うと、セキュリティ的によろしくないので、新しくユーザーを作成します。
ユーザー作成
ユーザー追加
ユーザーを追加します。「test_user」の部分に好きなユーザー名を指定します。(以下、ユーザー名を「test_user」とします。適宜置き換えてください。)
New password: でパスワードの入力を求められます。このときキーを押しても何も反映されませんが、入力できているので、入力できたらEnterを押します。
Retype new password: でパスワードを再度入力します。
userの情報を入力しますが、何も入力せずにEnterを連打します。
最後に入力した情報が正しいか聞かれるので、大文字の「Y」を押してEnterを押します。
$ sudo adduser test_user
Adding user `test_user' ...
Adding new group `test_user' (1001) ...
Adding new user `test_user' (1001) with group `test_user' ...
Creating home directory `/home/test_user' ...
Copying files from `/etc/skel' ...
New password: # ← ここでパスワードを入力する
Retype new password: # ← 再度パスワードを入力する
passwd: password updated successfully
Changing the user information for test_user
Enter the new value, or press ENTER for the default
Full Name []:
# ← ここは何も入力せずにEnter
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y # ← Y を入力してEnter
sudoグループに追加
作成するユーザーはデフォルトだとsudoが使えないので、グループに追加します。
$ sudo gpasswd -a test_user sudo
Adding user test_user to group sudo
所属グループを確認して、sudoが表示されるか確認します。
$ groups test_user
test_user : test_user sudo
パスワードログインを許可
Ubuntuのデフォルトの設定では、SSHに接続する際にパスワードで接続することを拒否されるので、パスワードで接続するのを許可させます。
「/etc/ssh/sshd_config」のファイルを編集します。「PasswordAuthentication yes」にします。
$ sudo sed -i 's/PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config
最後にSSHを再起動しておく。
$ sudo systemctl restart ssh
これで準備完了です。SSHのターミナルを閉じます。
$ exit
パスワードでSSH接続
ターミナル/コマンドプロンプトを開いて、SSHに接続します。パスワードが求められるので、先程設定したパスワードを入力します。
{host}はデフォルトキーを使用してSSHに接続で確認してください。
>ssh test_user@{host}
test_user@43.206.28.215's password: # ←設定したパスワードを入力
「test_user@ip-**:~$」のように表示されていれば、パスワードを用いたSSHの接続確認ができました。
秘密鍵でSSH接続
キーペアの作成
秘密鍵と公開鍵のキーペアを作成する。SSHには接続せず、ターミナル/コマンドプロンプトで行う。
キーペアのファイル名をここでは「test_key」とします。パスフレーズを入力すると、この鍵を用いてSSH接続するときにパスフレーズの入力が求められます。
2つの鍵が生成されます。
- test_key:秘密鍵(自分のPCに保存する鍵)
- test_key.pub:公開鍵(Lightsailに上げる鍵)
>ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (**/.ssh/id_rsa): **/.ssh/test_key # ←キーペアを保存するファイルパスを指定
Enter passphrase (empty for no passphrase): # ←パスフレーズを入力(空白でもよい)
Enter same passphrase again: # ←再度パスフレーズを入力
Your identification has been saved in **/.ssh/test_key
Your public key has been saved in **/.ssh/test_key.pub
The key fingerprint is:
SHA256:vlpqAupmSV+MkfLMYbtOUa3KtgNvore8PSsxBtn+qQ0 ****
The key's randomart image is:
+---[RSA 4096]----+
| |
| . |
| o .. . |
|o..=. . |
| o*.*. S |
| oB*oo . |
|.oEXo. o |
|.*=X* .o . |
|*oOB==o.. |
+----[SHA256]-----+
公開鍵の登録
「test_key.pub」の中身をコピーしておきます。
次に、パスワードでSSH接続をします。
>ssh test_user@{host}
公開鍵の登録を行います。ターミナル/コマンドプロンプトで右クリックするとコピーしたものをペーストすることができます。
登録が完了したらターミナル/コマンドプロンプトを閉じておきます。
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ echo "{コピーした公開鍵}" >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
$ exit
SSH接続
作成したユーザーとキーペアでSSH接続できるか確認します。
>ssh -i .ssh\test_key test_user@{host}
セキュリティ強化
パッケージアップデート
$ sudo apt update
$ sudo apt upgrade -y
SSH設定
ポート変更
SSHのポート番号はデフォルトで22ですが、そのままだとセキュリティ的によくないので、基本的には変更します。例えば、22から22222に変更します。
$ sudo sed -i 's/#Port.*/Port 22222/g' /etc/ssh/sshd_config
ネットワーキングの設定から「IPv4ファイアウォール」の「ルールを追加」をクリックします。
「ポートまたは作成」に22222を入力して「作成」を押します。
ログインログの変更
$ sudo sed -i 's/#SyslogFacility.*/SyslogFacility AUTHPRIV/g' /etc/ssh/sshd_config
$ sudo sed -i 's/#LogLevel.*/LogLevel VERBOSE/g' /etc/ssh/sshd_config
Rootのログイン禁止
$ sudo sed -i 's/#PermitRootLogin.*/PermitRootLogin no/g' /etc/ssh/sshd_config
パスワードログインを禁止
$ sudo sed -i 's/PasswordAuthentication.*/PasswordAuthentication no/g' /etc/ssh/sshd_config
最後にSSHを再起動しておく。
$ sudo systemctl restart ssh
ここでターミナル/コマンドプロンプトを閉じると、間違った設定にしているときに、SSH接続できなくなる可能性があるので、閉じないでおく。
SSH接続
新たにターミナル/コマンドプロンプトを開く。ポート番号を変更したので、SSH接続できるかを確認する。
> ssh -i .ssh\test_key test_user@{host} -p 22222