この記事について
この記事はインフラ初心者がWebページをVPS上で公開したい!って思ってやったことを備忘録として書き残したものです。素人が書いているため情報の信憑性は保証しません。詳細は各自で調べながらやることをおすすめします。記事のとおりにやっておかしなことになっても責任は取れませんのでご了承ください。
VPSを立てる
筆者はKAGOYA Cloud VPSを使いました。日本サーバーで月550円〜という安さ!他の会社のVPSを立てる場合は「SSH接続する」のセクションまで飛ばしてOK
CPU
1コア
メモリ
1GB
SSD
25GB
価格
月額上限550円
私が申し込んだときは、Kagoyaから送られてくる確認メールに返信して登録完了になりました。メール要チェック!
申込みが完了したらマイページが作られます。
以降のセットアップは基本的にKagoyaのマニュアルに従って行っていきます。
セキュリティグループを設定
「セキュリティ」タブの「セキュリティグループを追加」から追加します。
SSH接続のための20/tcpポートは自宅からアクセスできれば十分だと考え、自宅のアドレスだけにしました。
Linux, Macの場合はcurl inet-ip.info
でグローバルIPアドレスが確認できるはず。
20ポートの他にHTTP接続のための80/tcp、HTTPSのための443/tcpは任意のIPからアクセスできるようにします。
ログイン認証用キーを追加
サーバーにSSH接続するのに必要です。大切に保管してください。
インスタンスの作成
「インスタンス」タブの「インスタンス作成」から追加します。
OSはUbuntu22.04LTS
、スペックは一番安いやつにしました。
先程作ったログイン用認証キーを指定し、インスタンス作成!
SSH接続する
流れ
- rootでログイン
- 一般ユーザーを作成
- root権限を作成したアカウントに与える
- 作成したアカウントにSSH接続できるようにする
rootでログイン
参考:
https://support.kagoya.jp/vps/manual/index.php?action=artikel&cat=25&id=9&artlang=ja
https://support.kagoya.jp/vps/manual/index.php?action=artikel&cat=30&id=113&artlang=ja
ダウンロードした秘密鍵(kagoyaの場合はログイン認証キー)を用意しておいてください。
ローカルPCのシェルで以下のコマンドを実行します。IPアドレスはインスタンス一覧ページから確認できます。
まず、ダウンロードした秘密鍵の権限を変更します。これをしないとSSH認証で弾かれた。
chmod 400 {秘密鍵のパス}
これを実行した後に
ssh -i {秘密鍵のパス} root@{インスタンスのIPアドレス}
するとサーバーのシェルにログインできるはずです。
一般ユーザーを作成
rootで作業をするのは危険なので、一般ユーザーを作成して普段はそっちで作業することにします。
参考: AmazonLinux2で新しいユーザを作成してec2-userを削除する
https://itneko.com/ec2-user-delete/
下記のコマンドでユーザーを作成します。
ここでパスワードを設定することになりますが、パスワードは必ず複雑なものを使用してください。
あとでSSHログインは公開鍵認証でしかできないようにするのですが、現時点ではパスワードでもログインできてしまうため、簡単なパスワードだと不正ログインされます。(←本当は先にSSHでパスワード認証できないようにすべき。)
adduser {アカウント名}
root権限の付与
visudo
を実行すると多分nanoエディタが開く。下の方に行くと
root ALL=(ALL) ALL
みたいなのが書かれてるところが見つかると思うのでその下に以下の文を付け足す。
{アカウント名} ALL=(ALL) ALL
例) kotaro ALL=(ALL) ALL
これで一般ユーザーでもsudoをつけてコマンド実行すれば管理者権限で処理できるようになる。
作成したアカウントでSSH接続できるようにする
sudo su {アカウント名}
で作成したアカウントにログインできます。
ここにSSH関連の設定をしていきます。
まず、ローカルのPCで公開鍵を作成します。
ローカルPCで以下を実行。
ssh-keygen -f ~/.ssh/{SSHキーのファイル名}
パスワードを設定しておくと安全。
作成した公開鍵の内容をコピーしておきましょう。
cat ~/.ssh/{SSHキーのファイル名}.pub
次にサーバー側(一般ユーザーアカウントにログインした状態)で
mkdir ~/.ssh
vi ~/.ssh/authorized_keys
を実行し、先程コピーした公開鍵の内容をペーストします。viエディタは:wq
と入力してEnterを押すとセーブして終了できます。(w
が書き込み、q
が終了)
パスワードでログインできないようにする
現状だとパスワードが漏洩すると悪意のある第三者がSSH接続できてしまいます。なのでパスワードではそもそもログインできなくします。
参考: https://atmarkit.itmedia.co.jp/flinux/rensai/linuxtips/430dnypsswdacces.html
サーバー側にログインした状態で
vi /etc/ssh/sshd_config
ファイルの真ん中あたりにPasswordAuthentication
と書かれた部分があるので
PasswordAuthentication no
とします。ついでにrootでもログインできなくします。
PermitRootLogin no
一般にはrootは削除したほうが良いと思います。私の場合はrootを消そうとしたら他のプロセスで使われてるって言われて消せなかった。
おわり
これでSSH関連の設定は終了です。ufw
とかでファイアウォールを適宜設定した方がいいと思うのでそれは各自でお願いします。
参考文献
カゴヤ・ジャパン サポートセンター
https://support.kagoya.jp/vps/index.html
AmazonLinux2で新しいユーザを作成してec2-userを削除する
https://itneko.com/ec2-user-delete/